所以我玩了一下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发布了一个新版本。
我做错了什么,还是这个功能真的缺失了?
谢谢你。
从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、自定义工厂、装饰器等