2016-01-08 4 views
0

Я использую библиотеку MapStruct для отображения объектов, но я получил эту ошибку:Не удается отобразить свойства при использовании MapStruct

Не удается отобразить свойство «java.util.Date aDate» в «javax.xml.bind. JAXBElement ADATE ". Попробуйте объявить/реализовать метод сопоставления: «javax.xml.bind.JAXBElement map (значение java.util.Date)».

Мой вопрос: ГДЕ я должен уклониться от этого метода сопоставления?

ответ

3

Я решил эту проблему, написав еще один класс:

public class DateMapper { 

    public JAXBElement<XMLGregorianCalendar> map(Date value) { 

     // conversion here 

     return atswer; 
    } 
} 

и используя эту аннотацию:

@Mapper(uses=DateMapper.class) 
3

Есть два варианта:

  • Сделайте свой картографа абстрактный класс вместо интерфейса и реализовать этот метод непосредственно в классе сопоставления
  • Внедрите метод в другом классе и объявите его «используемым» вашим картографом; Дополнительную информацию см. На странице reference guide.

КПП. отображение должно производиться автоматически, если вы используете XMLGregorianCalendar или JAXBElement<XMLGregorianCalendar> вместо JAXBElement необработанного типа.