我有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);
}
最佳答案
如果我正确理解了该问题,则需要将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);
}
但是我不确定您的用例是否可行。