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

Программисты 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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