我正在使用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
答案 0 :(得分:0)
我认为您的代码应基于我的测试和Orika documentation而起作用。
不过,另一种选择是全局避免映射空值。构建MapperFactory时必须声明它。就您而言:
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().mapNulls(false).build();
请注意,由于这是MapperFactory定义,所以没有方向。无论源类或目标类是什么,Null值都不会被映射,并且在MapperFactory Builder中不存在mapNullsInReverse()方法。