Используя MapStruct, мы хотим использовать ReportingPolicy.ERROR и иметь код, подобный следующему:
@Mapping(source = "nestedSource.doublyNestedSourceField", target = "nestedTarget.doublyNestedTargetField")
Target mapSourceToTarget(Source source);
Где nestedSource не совпадает с типом nestedTarget, и оба поля типа duplyNested * имеют тип String.
Для NestedSource -> NestedTarget не объявлено сопоставление.Свойства String, объявленные в Mapping выше, являются единственными в этих типах.
Вышеприведенное приводит к ошибке несопоставленного источника:
Unmapped source property: "doublyNestedSourceField".
Это кажется более или менее разумным, поскольку мыне объявлял маппер для NestedSource -> NestedTarget.
Однако вот в чем проблема: если мы изменим ReportingPolicy для неподключенных источников, чтобы предупреждать / игнорировать, MapStruct выяснит, как правильно сопоставить дубликатыNosttedSourceField в реализации преобразователя, даже если он утверждает, что сопоставление источника отсутствует.Просто интересно, что здесь происходит, и я что-то упускаю.
---- Еще немного сорняков (в самом коде MapStruct) ----
Iможет быть что-то не так, но я заметил, что в BeanMethodMapping.java MapStruct пытается удалить «nestedSource.doubleNestedSourceField» из unprocessedSourceProperties, даже если ключ для соответствующего свойства - просто «nestedSource» в unprocessedSourceProperties.Таким образом, «nestedSource» остается в качестве необработанного свойства источника и выдается ошибка.