排除mapstruct中的特定字段

时间:2018-01-29 20:11:58

标签: java mapping mapstruct

当我尝试在mapstruct中的两个mapper之间创建classes时, 我编译代码时得到warning

src/main/java/mapstruct/DogMapper.java:15: warning: Unmapped target property: "otherField".
    Cat convert(Dog dog);
        ^
1 warning

这是我想要映射的两个对象:

@Getter
@Setter
public class Dog {
    private String say;
}

@Getter
@Setter
public class Cat {
    private String say;
    private String otherField;
}

这是我的 Mapper

@Mapper
public interface DogMapper {
    DogMapper mapper = Mappers.getMapper( DogMapper.class );

    @Mapping(source = "say", target = "say")
    Cat convert(Dog dog);
}

我读了mapstruct docs,我知道我可以通过多种方式排除这个特定字段:

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

或通过这种方式:

@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)

但我的目的最终是排除名为otherField的具体字段,
来自我所有的地图制作者,但不排除我没有使用的其他领域。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:3)

你已经回答了自己的问题,我不确定我是否理解你。您只想输入@Mapping(ignore = true, target = "otherField")一次吗?

如果此字段位于某个公共基类中,则可以使用Shared Configurations。否则,您使用@Mapping(ignore = true)的方式就是您的选择。

一方注意。您不必添加@Mapping(source = "say", target = "say") MapStruct自动映射具有相同名称的属性