Я пытаюсь написать класс преобразователя с помощью Mapstruct, который использует другой вложенный преобразователь.
Когда я определяю метод сопоставления в стиле слияния с целью сопоставления, сгенерированный код использует вложенный преобразователь, но он не присваивает возвращаемое значение вложенного преобразователя соответствующему свойству в целевом объекте. Вместо этого предполагается, что вложенный сопоставитель просто изменяет параметр назначения, что нарушает неизменяемость экземпляра NestedDestination.
Есть ли способ заставить Mapstruct присвоить возвращаемое значение вложенный картограф?
Приведенные ниже фрагменты иллюстрируют то, чего я пытаюсь достичь.
@Mapper(uses = {NestedMapper.class})
public abstract class Mapper {
abstract Destination map(final Source source, @MappingTarget Destination original);
}
@Mapper
public abstract class NestedMapper {
abstract NestedDestination map(final NestedSource source, @MappingTarget NestedDestination original);
}
@Generated
public class MapperImpl extends Mapper {
private NestedMapper nestedMapper;
@Override
Destination map(Source source, Destination original) {
if ( source == null ) {
return original;
}
if ( source.getProperty() != null ) {
if ( original.getProperty() == null ) {
original.setProperty( new NestedDestination() );
}
// I expect the line below to be
// original.setProperty(nestedMapper.map( source.getProperty(), original.getProperty() ));
nestedMapper.map( source.getProperty(), original.getProperty() );
}
else {
original.setProperty( null );
}
return original;
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... he-destina
Как я могу заставить Mapstruct назначить результат вложенного картографа месту назначения при предоставлении цели сопост ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение