У меня есть следующий класс модели:
@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 для перевода экземпляра модели в экземпляр Dto со свойствами возраста и высоты модели, переведенными в правильно заполненный объект C.
Пример:
model = { name: "Steve", age: 35, height: 185 } of Model
to:
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?
Спасибо за все советы.