MapStruct自动忽略未映射的属性

时间:2016-04-22 08:23:11

标签: java mapstruct

我在我的代码中使用不同业务用例之间共享的大型模型(超过50个字段)的MapStruct。根据入口点,将映射一些属性,而不映射一些属性。当我构建我的项目时,我将始终获得"警告:未映射的目标属性"信息。

我已经研究过并且可以通过使用语义来告诉mapstruct忽略该字段

@Mapping(target = "propName", ignore = true)

问题是,如果我的对象有这么多字段,则需要大量代码来忽略每个映射器类中的每个单独属性。我也不希望在我的日志中出现此警告。有没有办法告诉mapstruct忽略未映射的内容,避免这条消息?

2 个答案:

答案 0 :(得分:45)

您可以设置"未映射的目标政策"在@Mapper级别或通过@MapperConfig在多个地图制作者之间共享设置:

@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface MyMapper {}

答案 1 :(得分:0)

用于忽略自动映射 MapStruct 1.3.0。最终参考指南:

  

通过@BeanMapping(ignoreByDefault = true)的默认方式   行为将是显式映射,这意味着所有映射都必须   通过@Mapping指定,并且不会发出警告   缺少目标属性。

@BeanMapping(ignoreByDefault = true)
OneObj map(TwoObj two);