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);

0 ответов

Другие вопросы по тегам