【问题标题】:exclude specific fields in mapstruct排除 mapstruct 中的特定字段
【发布时间】:2018-01-30 04:30:34
【问题描述】:

虽然我试图在mapstruct 中的两个classes 之间创建mapper
当我编译我的代码时,我得到了一个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
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的特定字段,
从我所有的映射器中,但不排除我不使用的其他字段。

有什么方法可以实现吗?

【问题讨论】:

    标签: java mapping mapstruct


    【解决方案1】:

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

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

    一个旁注。不用加@Mapping(source = "say", target = "say") MapStruct 会自动映射同名属性

    【讨论】:

    • 我正在尝试实现类似的目标,但我有几个不想映射的字段,如果可能的话,我想避免重复相同的 @Mapping 注释。基本上,我正在寻找类似@Mapping(ignore = true, target = ["id", "other", "another"]) 的东西。现在有可能吗?
    猜你喜欢
    • 2020-10-27
    • 2020-03-07
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    相关资源
    最近更新 更多