使用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”保留为未处理的源属性,并引发错误。
答案 0 :(得分:0)
仅复制了此内容。请在MapStruct中提出问题。您可以在StackOverflow上参考此问题。