使用 MapStruct 时无法映射属性

Posted

技术标签:

【中文标题】使用 MapStruct 时无法映射属性【英文标题】:Can't map property when using 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)”。

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

【问题讨论】:

【参考方案1】:

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

public class DateMapper 

    public JAXBElement<XMLGregorianCalendar> map(Date value) 

        // conversion here

        return atswer;
    

并使用此注释:

@Mapper(uses=DateMapper.class)

【讨论】:

【参考方案2】:

有两种选择:

使您的映射器成为抽象类而不是接口,并直接在映射器类中实现该方法 在另一个类上实现该方法并将该方法声明为您的映射器“已使用”;请参阅reference guide 了解更多详情

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

【讨论】:

以上是关于使用 MapStruct 时无法映射属性的主要内容,如果未能解决你的问题,请参考以下文章

mapstruct 无法将模型的属性列表映射到字符串列表

属性映射工具——MapStruct

属性映射工具——MapStruct

MapStruct使用

无法使用 Mapstruct 生成没有输入参数的映射方法

Mapstruct 映射:如果所有源参数属性为空,则返回空对象