inheritance - 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 属性?
解决方案
您不能真正重用该mapBFromD
方法,因为该方法会创建一个实例,B
而您不能将其分配给A
.
您可以做的一件事是使用.
映射到当前目标
@Mapping(target = ".", source = "common")
public abstract A mapAFromC(C pOrigin);
但是,有了这个,您将必须定义 和 之间的任何非隐式D
映射A
。
推荐阅读
- unit-testing - Alfresco 中基于 Java 控制器的 Web 脚本的单元测试用例
- dexie - dexie js bulkDelete - 参数键 - 数组或对象
- php - 从两个数组创建多维数组
- python - 使用 speech_recognition Python 库进行语音到文本转换会出错
- python - 无法从 Windows 上的 git bash 运行烧瓶应用程序
- javascript - 模板文字写出 HTML 而不是 div 被呈现为 HTML
- elasticsearch - 仅在特定时间运行 ElastAlert
- java - 使用 appium 为 FrameMaker 创建自动化 Windows 测试 - 检查问题
- php - 如何将 /wp-admin 页面重定向到 wordpress 中的另一个页面(不是 wp-login.php)?
- javascript - javascript中的字符串到日期格式