看来您有3个不同的问题。
- 看来您想要实现的目标是让MapStruct检测到所有可能的实现
Customer
(或参见参考资料@XmlSeeAlso
)并使用所需的方法。这在MapStruct中是不可能自动实现的。有关现有功能请求,请参见 #131。 - 当您没有正确定义属性时,应该会发生这种情况。实际上,MapStruct仅查看getter和setter(不在字段中)。所以,如果你的吸气剂
getAM
,然后你@Mapping(target = "AMLLineOfBusiness", ignore = true)
- 这个问题与此类似。也许您可以尝试重用映射配置
1的可能解决方案是您自己身边的一个实例。
@Mapperpublic interface CustomerMapper { PersonalCustomer personcalCustomerToPersonalCustomer(PersonalCustomer pc); default Customer customerToCustomer(Customer customer) { if (customer instanceOf PersonalCustomer) { return personalCustomerToPersonalCustomer((PersonalCustomer) pc); } else if (customer instanceOf BusinessCustomer) { return businessCustomerToBusinessCustomer((BusinessCustomer) pc); } }}发生这种情况的原因是MapStruct是注释处理器,因此它在编译期间生成了代码。另一方面,Dozer正在使用运行时信息。推土机可以在运行时获取类并选择正确的方法。MapStruct无法推断所有可能的实现。



