我有以下实现的mapstruct Mapper
@Mapper
public interface MyMapper extends Serializable {
MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);
//@Mapping(target = "status", source = "p1.status")
MergedPojosClass from(Pojo1 p1, Pojo2 p2);
}
在目标类中,我具有字段状态,但是在两个pojo类中都可以使用此字段。
对于我的pojo,我使用lombok来生成setter,getter和各种构造函数。
没有注释行,我收到以下错误:
错误:(20,14)Java:目标属性“状态”的几个可能的源属性。
我是否可以通过添加一些标注说Pojo1具有更高的优先级来避免出现上述样板(显式映射)?
我一直在研究Java文档以及mapstruct的源代码,但没有任何示例或线索可以对我的情况有所帮助。我试图通过InheritanceStrategy找到一些东西,但是看起来很像mapstruct的内部概念。
最佳答案
您可以尝试定义@MapperConfig
。不确定是否可以
像这样:
@MapperConfig
public interface MyConfig {
@Mapping(target = "status", source = "p1.status")
MergedPojosClass from(Pojo1 p1);
}
@Mapper(config = MyConfig.class, mappingInheritanceStrategy=MappingInheritanceStrategy.AUTO_INHERIT_ALL_FROM_CONFIG)
public interface MyMapper extends Serializable {
MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);
// here's the doubt.. I'm not sure that in 2 arg mapping the config is used
MergedPojosClass from(Pojo1 p1, Pojo2 p2);
}