我有以下实现的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);
}

10-02 23:22