我有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);
}


但是我不确定您的用例是否可行。

07-28 02:35