提问者:小点点

无法使用MapStruct将属性String映射到JAXBElement<String>


所以我玩了一下Mapstruct,阅读了版本1.1.0.Final的参考文档,并得到了一点:隐式类型转换

其中定义了以下语句:

JAXBElement之间

我试过了,但我收到的错误是:

Can't map property "java.lang.String xmlElement" "javax.xml.bind.JAXBElement<java.lang.String> xmlElement". 
Consider to declare/implement a mapping method:
javax.xml.bind.JAXBElement<java.lang.String> map(java.lang.String value)".

我知道这和使用Mapstruct时无法映射属性是同一个线程,但从那时起,Mapstruct发布了一个新版本。

我做错了什么,还是这个功能真的缺失了?

谢谢你。


共3个答案

匿名用户

JAXBElement映射

大家也可以看看这个联调。

匿名用户

如果这发生在Java9或更高版本上,并且您使用maven库中JAXBElement类型的实现(在我的例子中为'javax. xml.bind:jaxb-api'),请确保它位于注释处理器的类路径上-这为我解决了问题。

匿名用户

如果您的JAXBElement是由wsdl客户端生成器(例如xjc)生成的,您需要提供客户端生成器生成的相应ObjectFactory. class:

@Mapper(uses = ObjectFactory.class)
public interface OrderMapper {
    Order orderEntityToExternalOrder(OrderEntity orderEntity);
}

请参阅:MapStruct 1.0.0。Beta1支持JAXB、自定义工厂、装饰器等