False 'Тип параметра «учетная запись» не имеет свойства с именем «contact.holders.emails».' ошибка в @Mapping MapStruct ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
False 'Тип параметра «учетная запись» не имеет свойства с именем «contact.holders.emails».' ошибка в @Mapping MapStruct

Сообщение Anonymous »

В нашем проекте у нас есть несколько модулей со спецификациями OpenAPI, которые являются источником сгенерированных классов, представляющих модель предметной области различных версий. Теперь с помощью MapStruct (версия 1.6.2) я создаю преобразователи для преобразования между одними и теми же классами предметной области, принадлежащими разным модулям.
Вот мой класс преобразователя:

Код: Выделить всё

@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
public interface AccountMapper {

@Mapping(source = "account", target = "depositAccount")
com.model5.AccountWithDetailsOneOf map(com.model6.DepositAccount account);
}
Компиляция кода выдает это предупреждение

Код: Выделить всё

java: Unmapped target property: "email". Mapping from Collection element "AccountHolder account.contact.holders" to "AccountHolder depositAccount.contact.holders".
Проблема в том, что в версии 6 (которая является моим источником) поле виновника называется электронная почта, а в версии 5 (которая является целевой) имя соответствующего поля — электронная почта .
Чтобы это исправить, я модифицирую метод map() следующим образом:

Код: Выделить всё

@Mapping(source = "account", target = "depositAccount")
@Mapping(source = "account.contact.holders.emails", target = "depositAccount.contact.holders.email")
com.model5.AccountWithDetailsOneOf map(com.model6.DepositAccount account);
После сбоя этой перекомпиляции

Код: Выделить всё

java: The type of parameter "account" has no property named "contact.holders.emails".
Но свойство действительно есть, единственная проблема в том, что оно является членом суперкласса (см. скриншот ниже). Я подозреваю, что это каким-то образом нарушает отображение, но причина мне неясна, поскольку все необходимые геттеры и сеттеры генерируются с помощью Lombok и присутствуют в целевых классах по всей цепочке ссылок.
Это так? ошибка/ограничение, наложенное MapStruct, или я делаю что-то не так?
Изображение


Подробнее здесь: https://stackoverflow.com/questions/791 ... holders-em

Вернуться в «JAVA»