Не удается отобразить свойство при использовании MapStruct
Я использую библиотеку MapStruct для отображения объектов, но я получил эту ошибку:
Невозможно сопоставить свойство "java.util.Date aDate" с "javax.xml.bind.JAXBElement ADATE". Попробуйте объявить / реализовать метод сопоставления: "javax.xml.bind.JAXBElement map(значение java.util.Date)".
Мой вопрос: ГДЕ я должен объявить этот метод отображения?
2 ответа
Решение
Я решил эту проблему, написав другой класс:
public class DateMapper {
public JAXBElement<XMLGregorianCalendar> map(Date value) {
// conversion here
return atswer;
}
}
и используя эту аннотацию:
@Mapper(uses=DateMapper.class)
Есть две альтернативы:
- Сделайте ваш mapper абстрактным классом вместо интерфейса и реализуйте этот метод непосредственно в классе mapper
- Реализуйте метод в другом классе и объявите его как "используемый" вашим картографом; См. Справочное руководство для получения дополнительной информации.
Btw. отображение должно быть сделано автоматически, если вы используете XMLGregorianCalendar
или же JAXBElement<XMLGregorianCalendar>
вместо JAXBElement
сырой тип.