【问题标题】: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);
    }
    

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

    【讨论】:

      猜你喜欢
      • 2020-03-27
      • 1970-01-01
      • 2022-08-12
      • 2016-10-14
      • 1970-01-01
      • 2018-01-13
      • 2021-11-22
      • 2016-03-11
      • 2018-01-18
      相关资源
      最近更新 更多