使用 MapStruct 时无法映射 属性

Can't map property when using MapStruct

我正在使用 MapStruct 库来映射对象,但出现此错误:

无法将 属性 "java.util.Date aDate" 映射到 "javax.xml.bind.JAXBElement ADATE"。考虑declare/implement一个映射方法:"javax.xml.bind.JAXBElement map(java.util.Date value)".

我的问题:我应该在哪里删除这个映射方法?

我通过写另一个 class:

解决了这个问题
public class DateMapper {

    public JAXBElement<XMLGregorianCalendar> map(Date value) {

        // conversion here

        return atswer;
    }
}

并使用此注释:

@Mapper(uses=DateMapper.class)

有两种选择:

  • 使您的映射器成为抽象的 class 而不是接口,并直接在映射器中实现该方法 class
  • 在另一个 class 上实现该方法,并由您的映射器将此方法声明为 "used";有关详细信息,请参阅 reference guide

顺便说一句。如果您使用 XMLGregorianCalendarJAXBElement<XMLGregorianCalendar> 而不是 JAXBElement 原始类型,映射应该自动完成。