我们使用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技巧可以帮助我们解决此问题吗?
谢谢
答案 0 :(得分:0)
您是否看过@MapperConfig
..签出我们的单元测试。我建议将您的基本/原型方法放在带有注释的@MapperConfig
共享配置界面中,您可以在@Mapper
有关更多信息,请参见this单元测试。或结帐user guide。