MapStruct:嵌套属性和未映射的源属性上的ReportingPolicy.ERROR问题

时间:2019-03-26 20:29:23

标签: mapstruct nested-properties unmappedresourcehandler

使用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”保留为未处理的源属性,并引发错误。

1 个答案:

答案 0 :(得分:0)

仅复制了此内容。请在MapStruct中提出问题。您可以在StackOverflow上参考此问题。