使用MapStruct时无法映射属性

zyg*_*tus 4 java object-object-mapping mapstruct

我使用MapStruct库来映射对象,但是我收到了这个错误:

无法将属性"java.util.Date aDate"映射到"javax.xml.bind.JAXBElement ADATE".考虑声明/实现映射方法:"javax.xml.bind.JAXBElement map(java.util.Date value)".

我的问题:我应该在哪里取消这种映射方法?

zyg*_*tus 10

我通过编写另一个类解决了这个问题:

public class DateMapper {

    public JAXBElement<XMLGregorianCalendar> map(Date value) {

        // conversion here

        return atswer;
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用此注释:

@Mapper(uses=DateMapper.class)
Run Code Online (Sandbox Code Playgroud)


Gun*_*nar 5

有两种选择:

  • 使您的映射器成为抽象类而不是接口,并直接在映射器类中实现该方法
  • 在另一个类上实现该方法,并将其声明为您的映射器“已使用”;有关更多详细信息,请参见参考指南

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