Mapstruct - конвертировать объект, который содержит и интерфейс в себя - PullRequest
0 голосов
/ 21 января 2019

Я использую mapstruct для преобразования объекта в другой. В объекте для преобразования есть интерфейс, и mapstruct это не нравится.

Мне удалось преобразовать интерфейс в объект, реализовав метод по умолчанию и указав реализацию для вызова:

public default MessagesList interfaceMapping (Integer not, List<MessageEntity> list) {

    return messToImpl(numNotification, list);
}

Теперь проблема в том, что я не знаю, как сделать похожую вещь, которая не является обходным путем, для преобразования внутреннего объекта, подписанного как интерфейс.

1 Ответ

0 голосов
/ 21 января 2019

Просто найдите хороший способ реализации пользовательского кода для сопоставления одного объекта:

@Mapping(target = "sender", expression = "java(new YourClass(null, messageEntity.getSenderType(), messageEntity.getSenderID(), messageEntity.getSenderContact()))")

Таким образом, с помощью выражения вы можете определить собственный код, все еще используя определения mapstruct.

На всякий случай вам может понадобиться импортировать класс, не определенный как исходный или целевой, просто не забудьте аннотировать класс следующим образом, чтобы позволить mapstruct импортировать необходимый класс:

@Mapper(imports = YourClass.class)
...