Java Mapping POJO TO DTO с различной структурой
Я пытаюсь отобразить данные из одного объекта в другой с помощью библиотеки dozer, но они имеют разные структуры. Вот некоторые рабочие фрагменты кода:
public class Complex {
@Mapping("embeddedDTO.id")
private int id;
@Mapping("embeddedDTO.age")
private int age;
private String firstName;
private String lastName;
}
public class ComplexDTO {
private EmbeddedDTO embeddedDTO;
private String firstName;
private String lastName;
public static class EmbeddedDTO {
private int id;
private int age;
public EmbeddedDTO() {
}
}
}
Однако, потому что у меня нет доступа к Complex
Я хотел бы перенести аннотации из Complex
класс к ComplexDTO
учебный класс. Что-то вроде этого:
public class ComplexDTO {
@Mapping("id,age") //<--Doesn't work
private EmbeddedDTO embeddedDTO;
private String firstName;
private String lastName;
public static class EmbeddedDTO {
@Mapping("./id") //<--Doesn't work
private int id;
@Mapping("./age") //<--Doesn't work
private int age;
public EmbeddedDTO() {
}
}
}
... но это не работает. Есть ли лучшая библиотека отображения, которая поддерживает этот вид аннотирования?
Вот решение API Mapping:
BeanMappingBuilder beanMappingBuilder = new BeanMappingBuilder() {
@Override
protected void configure() {
mapping(Complex.class, ComplexDTO.class)
.fields("id", "embeddedDTO.id");
}
};
DozerBeanMapper mapper = new DozerBeanMapper();
mapper.addMapping(beanMappingBuilder);