问题描述
我有一个审核对象来记录created
,updated
和creator
的三个属性,如下所示:
public class Audit {
private OffsetDateTime created;
private OffsetDateTime updated;
private String creator;
}
每个POJO都具有审核属性
public class A {
private Audit audit;
}
public class B {
private Audit audit;
}
public class C {
private Audit audit;
}
...等
现在,我想问一下如何创建一个可重用的模型和映射器,以将created
,updated
和creator
提取到父层(可能是继承的或某些注释),如下所示:
// Before mapping
A {
...,audit: {
created: ...,updated: ...,creator: ...
}
}
// I wanna to mapping like these
A {
...
created: ...,creator: ...
}
B {
...
created: ...,creator: ...
}
C {
...
created: ...,creator: ...
}
还是我必须为这些类的所有映射器使用@Mapping(source = audit.created,target = created)
批注?
解决方法
我不确定我是否正确理解您。但是,MapStruct 1.4.0.Beta3定义了鸭子类型。您可以将自己的注释作为@Mapping(source = audit.created,target = created)
的简写,请参见documentation。
在1.3.x中,您需要为目标/源定义通用的基本类型,并且可以从基本映射方法继承映射。检出documentation。