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

问题描述 投票:0回答:1

使用MapStruct,我们希望使用ReportingPolicy.ERROR,并具有如下代码:

@Mapping(source = "nestedSource.doublyNestedSourceField", target = "nestedTarget.doublyNestedTargetField")
Target mapSourceToTarget(Source source);

其中nestedSource与nestedTarget的类型不同,而doublelyNested * Field类型都是String。

没有为NestedSource声明映射器 - > NestedTarget。上面映射中声明的String属性是这些类型中唯一的属性。

以上原因导致未映射的源错误:

Unmapped source property: "doublyNestedSourceField".

这似乎或多或少是合理的,因为我们没有声明NestedSource的映射器 - > NestedTarget。

但是,问题在于:如果我们将未映射源的ReportingPolicy更改为warn / ignore,MapStruct会计算出如何在mapper实现中正确映射doublyNestedSourceField,即使它声称没有源映射存在。只是想知道这里发生了什么,以及我是否遗漏了什么。

----进入杂草多一点(在MapStruct代码本身)----

我可能做错了,但我注意到在BeanMethodMapping.java中,MapStruct尝试从unprocessedSourceProperties中删除“nestedSource.doubleNestedSourceField”,即使相应属性的键只是unprocessedSourceProperties中的“nestedSource”。因此,“nestedSource”保留为未处理的源属性,并抛出错误。

mapstruct nested-properties unmappedresourcehandler
1个回答
0
投票

刚刚转载了这个..请在MapStruct中提出问题。您可以在StackOverflow上参考这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.