mapstruct - MapStruct:未映射源属性上的嵌套属性和 ReportingPolicy.ERROR 问题
问题描述
使用 MapStruct,我们想使用 ReportingPolicy.ERROR,并且有如下代码:
@Mapping(source = "nestedSource.doublyNestedSourceField", target = "nestedTarget.doublyNestedTargetField")
Target mapSourceToTarget(Source source);
其中nestedSource 与nestedTarget 的类型不同,并且两个doublyNested*Field 类型都是String。
没有为 NestedSource -> NestedTarget 声明映射器。上面映射中声明的 String 属性是这些类型中的唯一属性。
以上导致未映射的源错误:
Unmapped source property: "doublyNestedSourceField".
这似乎或多或少是合理的,因为我们没有为 NestedSource -> NestedTarget 声明映射器。
但是,问题是:如果我们将未映射源的 ReportingPolicy 更改为警告/忽略,MapStruct 会计算出如何在映射器实现中正确映射 doublyNestedSourceField,即使它声称不存在源映射。只是想知道这里发生了什么,以及我是否遗漏了什么。
----深入杂草一点(在 MapStruct 代码本身中)----
我可能做错了什么,但我确实注意到在 BeanMethodMapping.java MapStruct 尝试从 unprocessedSourceProperties 中删除“nestedSource.doubleNestedSourceField”,即使相应属性的键只是 unprocessedSourceProperties 中的“nestedSource”。因此,“nestedSource”保留为未处理的源属性并引发错误。
解决方案
推荐阅读
- reactjs - 我正在尝试使用 map 函数从数组中获取数据。但是 id 没有获取。我使用'key'关键字,仍然有未定义的ID
- amazon-web-services - 无法使用 cloudformation 模板在 api 网关方法中调用 lambda 函数
- sql-server - 合并两个查询并在一行中显示
- android - Android - 从下载的文件中更改字体
- c# - 如何设置和锁定控制台大小和位置?
- react-native - 如何使用本机基础禁用其他选项卡标题?
- python - 单击多个链接并获取其网址
- python - CustomUser 匹配查询不存在。错误(DJANGO)
- python - 将 mesh.vertices 与 python 脚本合并时,Blender 崩溃
- html - 防止容器与其他内容重叠