Как я могу заставить Mapstruct назначить результат вложенного картографа месту назначения при предоставлении цели сопостJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу заставить Mapstruct назначить результат вложенного картографа месту назначения при предоставлении цели сопост

Сообщение Anonymous »

Я пытаюсь написать класс преобразователя с помощью Mapstruct, который использует другой вложенный преобразователь.
Когда я определяю метод сопоставления в стиле слияния с целью сопоставления, сгенерированный код использует вложенный преобразователь, но он не присваивает возвращаемое значение вложенного преобразователя соответствующему свойству в целевом объекте. Вместо этого предполагается, что вложенный сопоставитель просто изменяет параметр назначения, что нарушает неизменяемость экземпляра NestedDestination.
Есть ли способ заставить Mapstruct присвоить возвращаемое значение вложенный картограф?
Приведенные ниже фрагменты иллюстрируют то, чего я пытаюсь достичь.
@Mapper(uses = {NestedMapper.class})
public abstract class Mapper {

abstract Destination map(final Source source, @MappingTarget Destination destination);

}

@Mapper
public abstract class NestedMapper {

abstract NestedDestination map(final NestedSource source, @MappingTarget NestedDestination destination);

}

@Generated
public class MapperImpl extends Mapper {

private NestedMapper nestedMapper;

@Override
Destination map(Source source, Destination destination) {

if ( source == null ) {
return destination;
}

if ( source.getProperty() != null ) {
if ( destination.getProperty() == null ) {
destination.setProperty( new NestedDestination() );
}

// I expect the line below to be
// destination.setProperty(nestedMapper.map( source.getProperty(), destination.getProperty() ));
nestedMapper.map( source.getProperty(), destination.getProperty() );
}
else {
destination.setProperty( null );
}

return destination;
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... he-destina
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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