【问题标题】:Transferring Object with MapStruct via 2 Mappers using Generated Class使用生成的类通过 2 个映射器使用 MapStruct 传输对象
【发布时间】:2020-03-15 17:03:58
【问题描述】:
- 我有 3 个班级:A、B、C。
- 它们每个都有一个 ObjectX 字段。
- A 类和 C 类也有 ObjectY 字段。
- B 类是自动生成的,我无法修改。
- 我有从 A 到 B 的映射器,以及从 B 到 C 的映射器,但它们没有
包括 ObjectY(它被忽略)。
是否有可能以某种方式修改这些映射器以包含 ObjectY(不添加 A 到 C 之间的映射)?
映射器代码如下:
@Mapper
public interface MyMapper {
@Mapping(target = "ObjectX")
B AtoB(A a);
@Mapping(target = "ObjectX")
C BtoC(B b);
}
【问题讨论】:
标签:
java
oop
object
mapstruct
mapper
【解决方案1】:
如果我正确理解了这个问题,您想将A 翻译成B,然后将B 翻译成C,并且您还想保留ObjectY 字段。
问题是B没有ObjectY字段,所以无法通过这个翻译存储它的值。
我想到的唯一解决方案是创建类 MyB,它扩展类 B 并包含 ObjectY 字段,然后像这样更改您的映射器:
public class MyB extends B {
private ObjectY objectY;
// getters and setters omitted for brevity
}
@Mapper
public interface MyMapper {
MyB AtoB(A a);
C BtoC(MyB b);
}
但我不确定您的用例是否可行。