【问题标题】:Can't map property when using MapStruct使用 MapStruct 时无法映射属性
【发布时间】:2016-04-12 20:25:09
【问题描述】:
我正在使用 MapStruct 库来映射对象,但出现此错误:
无法将属性“java.util.Date aDate”映射到“javax.xml.bind.JAXBElement ADATE”。考虑声明/实现一个映射方法:“javax.xml.bind.JAXBElement map(java.util.Date value)”。
我的问题:我应该在哪里取消这种映射方法?
【问题讨论】:
标签:
java
object-object-mapping
mapstruct
【解决方案1】:
我通过编写另一个类解决了这个问题:
public class DateMapper {
public JAXBElement<XMLGregorianCalendar> map(Date value) {
// conversion here
return atswer;
}
}
并使用此注释:
@Mapper(uses=DateMapper.class)
【解决方案2】:
有两种选择:
- 使您的映射器成为抽象类而不是接口,并直接在映射器类中实现该方法
- 在另一个类上实现该方法并将该方法声明为您的映射器“已使用”;请参阅reference guide 了解更多详情
顺便说一句。如果您使用 XMLGregorianCalendar 或 JAXBElement<XMLGregorianCalendar> 而不是 JAXBElement 原始类型,则映射应该自动完成。