Не удается отобразить свойство при использовании 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 сырой тип.

Другие вопросы по тегам