Orika mapper отображает нули, даже mapNulls (false) и mapNullsInReverse (false) - PullRequest
0 голосов
/ 01 июня 2018

Я использую Orika mapper для сопоставления сущности JPA с DTO и наоборот.Проблема в том, что у меня нет идентификатора объекта в объекте DTO, поэтому я хочу сохранить идентификатор объекта JPA.По этой причине я отключил mapNulls (false) и mapNullsInReverse (false).Мой bean-модуль mapper выглядит следующим образом:

@Bean
    public MapperFactory roadAssisanceMapperFactory() {
        MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
        mapperFactory.classMap(RoadAssistance.class, RoadAssistanceDto.class)
                .mapNulls(false).mapNullsInReverse(false)
                .exclude("city").exclude("country").exclude("region").exclude("images")
                .byDefault().register();
        return  mapperFactory;
    }

У меня нет конструкторов в обеих сущностях, и я использую mapper с roadAssisanceMapperFactory().getMapperFacade().map(roadAssistanceDto,roadAssistance); Когда orika отображает сущности, я хочу иметьid, сохраненный в экземпляре roadAssistance, сохранен, поскольку в roadAssistanceDto он имеет значение null.Орика версия 1.5.2

1 Ответ

0 голосов
/ 03 июня 2019

Я думаю, что ваш код должен работать на основе моих тестов и документации Orika .

Одна из альтернатив - глобальное предотвращение отображения пустых значений.Вы должны заявить об этом при создании вашего MapperFactory.В вашем случае:

MapperFactory mapperFactory = new DefaultMapperFactory.Builder().mapNulls(false).build();

Обратите внимание, что поскольку это определение MapperFactory, направление отсутствует.Нулевые значения не будут отображаться, какими бы ни были исходный или целевой классы, а метод mapNullsInReverse () не существует в MapperFactory Builder.

...