MapStruct: проблема с вложенными свойствами и ReportingPolicy.ERROR для несопоставленных свойств источника - PullRequest
0 голосов
/ 26 марта 2019

Используя 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» остается в качестве необработанного свойства источника и выдается ошибка.

1 Ответ

0 голосов
/ 27 марта 2019

Только что воспроизвел это .. Пожалуйста, сообщите о проблеме в MapStruct.Вы можете обратиться к этому вопросу в StackOverflow.

...