我在我的代码中使用MapStruct与不同业务用例之间共享的大型模型(超过50个字段).根据入口点,将映射一些属性,而不映射一些属性.当我构建项目时,我将始终获得"警告:未映射的目标属性"消息.
我已经研究过并且可以通过使用语义来告诉mapstruct忽略该字段
@Mapping(target = "propName", ignore = true)
Run Code Online (Sandbox Code Playgroud)
问题是,鉴于我的对象具有如此多的字段,将需要大量代码来忽略每个映射器类中的每个单独属性.我也不希望在我的日志中出现此警告.有没有办法告诉mapstruct忽略未映射的内容,避免这条消息?
Gun*_*nar 51
您可以在@Mapper级别上设置"未映射的目标策略",也可以通过@MapperConfig在多个映射器之间共享设置:
@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface MyMapper {}
Run Code Online (Sandbox Code Playgroud)
小智 11
对于忽略自动映射 MapStruct 1.3.0.Final 参考指南:
通过@BeanMapping(ignoreByDefault = true),默认行为将是显式映射,这意味着必须通过@Mapping 指定所有映射,并且不会在缺少目标属性时发出警告。
@BeanMapping(ignoreByDefault = true)
OneObj map(TwoObj two);
Run Code Online (Sandbox Code Playgroud)