首页 > 解决方案 > Mapstruct如何从组合映射到继承?

问题描述

一方面,我有一个扩展 B 的对象 A。

   public class A extends B {
        private boolean anotherAttr;
   }

另一方面,一个具有 D 属性的对象 C

public class C implements Serializable {
    private D common;
    private boolean anotherAttr;
}

我已经有一个从 D 映射到 B 的 mapstruct 方法

public abstract B mapBFromD(D pOrigin);

现在我需要从 C 映射 A

public abstract A mapAFromC(C pOrigin);

如何重用 mapBFromD 而不必手动声明每个 B 属性?

标签: inheritancecompositionmapstruct

解决方案


您不能真正重用该mapBFromD方法,因为该方法会创建一个实例,B而您不能将其分配给A.

您可以做的一件事是使用.映射到当前目标

@Mapping(target = ".", source = "common")
public abstract A mapAFromC(C pOrigin);

但是,有了这个,您将必须定义 和 之间的任何非隐式D映射A


推荐阅读