使用Orika映射器映射Bean时,如何排除指定属性?
解决Orika映射中排除嵌套属性无效的问题
嘿,我来帮你搞定这个Orika映射排除属性的问题!你说想排除billingSummary.billableItems但配置不生效,大概率是配置的顺序或者写法有问题,下面给你几种靠谱的解决方式和排查要点:
一、正确的ClassMap配置方式(推荐)
Orika里排除嵌套属性需要用点分隔的完整属性路径,而且要注意配置顺序——exclude必须放在byDefault之前,否则默认映射规则会覆盖你的排除设置。
举个具体的代码示例:
// 初始化MapperFactory MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build(); // 假设你的源类是SourceBean,目标类是TargetBean mapperFactory.classMap(SourceBean.class, TargetBean.class) .exclude("billingSummary.billableItems") // 先指定要排除的嵌套属性 .byDefault() // 再启用其他属性的默认映射 .register(); // 获取映射器实例 MapperFacade mapper = mapperFactory.getMapperFacade(); // 执行映射操作 TargetBean target = mapper.map(sourceBean, TargetBean.class);
二、全局排除(适用于多场景需要排除的情况)
如果这个嵌套属性在所有映射场景都不需要被映射,可以全局配置排除,但这种方式要谨慎使用,避免影响其他映射规则:
MapperFactory mapperFactory = new DefaultMapperFactory.Builder() .excludeProperties("billingSummary.billableItems") // 全局排除该属性 .build();
三、常见坑点排查
- 拼写/大小写错误:仔细核对
billingSummary和billableItems的名称是否和Bean类中的属性完全一致,Orika对属性名大小写敏感。 - 自定义映射干扰:如果你为
billingSummary属性配置过自定义Converter或Mapper,可能会覆盖排除规则,建议暂时移除自定义配置测试。 - 双向映射遗漏:如果同时需要配置
SourceBean→TargetBean和TargetBean→SourceBean的双向映射,要在对应的ClassMap中都添加exclude规则。
内容的提问来源于stack exchange,提问作者Kiran
相关产品推荐
相关产品推荐

