34

我在我的代码中使用在不同业务用例之间共享的大型模型(超过 50 个字段)的 MapStruct。根据入口点,某些属性将被映射,而有些则不会。当我构建我的项目时,我总是会收到“警告:未映射的目标属性”消息。

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

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

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

4

2 回答 2

60

@Mapper您可以在关卡上设置“未映射的目标策略”,也可以通过@MapperConfig在多个映射器之间共享设置:

@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface MyMapper {}
于 2016-04-25T09:55:48.540 回答
16

对于忽略自动映射 MapStruct 1.3.0.Final 参考指南:

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

@BeanMapping(ignoreByDefault = true)
OneObj map(TwoObj two);
于 2019-05-31T06:28:25.383 回答