У меня есть следующий класс модели:
@Data
public class M {
private String name;
private int age;
private int height;
}
и следующий класс Dto:
@Data
public class Dto {
private String name;
private B nested;
}
@Data
public class C extends B {
private int height;
}
где B - абстрактный класс:
@Data
public abstract class B {
private int age;
}
Я хотел бы использовать ModelMapper для преобразования экземпляра Model в экземпляр Dto, когда свойства возраста и высоты модели переведены в объект C, правильно заполненный.
Пример:
model = { name: "Steve", age: 35, height: 185 } of Model
до:
dto = { name: "Steve", nested: { age: 35, height: 185 } of C } of Dto
Я попробовал следующее:
mapper.createTypeMap(Model.class, Dto.class).addMappings(new PropertyMap<Model, Dto>() {
@Override
protected void configure() {
map(source, destination.getNested());
}
});
mapper.createTypeMap(Model.class, C.class);
заканчивается dto.getNested() == null
.
Также попытался добавить
public Model getSelf() { return this; }
к классу Model (из базового любопытства) и переопределите маппер свойств, чтобы иметь:
with(new Provider<C>(req => new C())).map(source.getSelf(), destination.getNested());
который заселил dto.getNested()
, но не заселил dto.getNested().getHeight()
.
Это достижимо с помощью ModelMapper?
Спасибо за все советы.