Orika mapper映射nulls甚至mapNulls(false)和mapNullsInReverse(false)

时间:2018-06-01 06:33:06

标签: java orika

我正在使用Orika mapper将JPA实体映射到DTO,反之亦然。问题是我在DTO对象中没有实体ID,所以我想保留JPA实体ID。出于这个原因,我关闭了mapNulls(false)和mapNullsInReverse(false)。 我的映射器Bean就像这样 -

@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;
    }

我在两个实体中都没有任何构造函数,而我正在使用roadAssisanceMapperFactory().getMapperFacade().map(roadAssistanceDto,roadAssistance);的tha mapper 当orika映射实体时,我想保留roadAssistance实例中的id,因为在roadAssistanceDto中它为null。 Orika版本是1.5.2

1 个答案:

答案 0 :(得分:0)

我认为您的代码应基于我的测试和Orika documentation而起作用。

不过,另一种选择是全局避免映射空值。构建MapperFactory时必须声明它。就您而言:

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

请注意,由于这是MapperFactory定义,所以没有方向。无论源类或目标类是什么,Null值都不会被映射,并且在MapperFactory Builder中不存在mapNullsInReverse()方法。