gpt4 book ai didi

java - 从mapstruct收到错误 "Several possible source properties for target property"时如何避免显式映射?

转载 作者:太空宇宙 更新时间:2023-11-04 09:21:50 38 4
gpt4 key购买 nike

我的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 和所有类型的构造函数。

如果没有注释行,我会收到以下错误:

Error:(20, 14) java: Several possible source properties for target property "status".

我可以通过添加一些注释来避免上述样板文件(显式映射),说明 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);
}

关于java - 从mapstruct收到错误 "Several possible source properties for target property"时如何避免显式映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58233500/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com