具有方法重载和InheritedConfiguration

时间:2019-05-01 23:19:17

标签: mapstruct

我们使用MapStruct和Spring Data在JPA实体和DTO类之间进行转换。所有映射器都使用beanToDTO()和dtoToBean()方法遵循相同的模式。经过学习治愈后,我们可以完成所有这些工作。现在,我们尝试使用Spring注入替换JPA实体,DTO和Mapper类上的实现。我们有JPA实体和DTO替换工作。因此,现在我们试图让Spring注入替代Mapper实现。

对于我们的问题,我们可以对映射器接口进行子类化,而不是具有2个beanToDTO()方法和2个dtoToBean Methods(),其中1个用于基本JPA实体和DTO,另外1个用于子类JPA实体和DTO。对于简单的示例来说,这很好。

对于需要一些自定义的映射器,我们对基本映射器使用@Mapping批注和@InheritInverseConfiguration。对于子类映射器,我们尝试相同的操作,但是问题是子类映射器中的InheritInverseConfiguration给出错误“存在多个匹配的逆方法:beanToDTO(),beanToDTO()。明确指定名称。”

两个方法都具有相同的名称,因此我们无法识别要引用的实现。我意识到问题出在我们的实现方法上,但它简化了我们的代码以:  -getBean()  -getMapper()。beanToDTO() 并且我们将能够通过Spring注入替换JPA实体,Mapper和DTO。

还有其他MapStruct技巧可以帮助我们解决此问题吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您是否看过@MapperConfig ..签出我们的单元测试。我建议将您的基本/原型方法放在带有注释的@MapperConfig共享配置界面中,您可以在@Mapper

中引用

有关更多信息,请参见this单元测试。或结帐user guide