java - 排除mapstruct中的特定字段

标签 java mapping mapstruct

当我尝试在 mapstruct 中的两个之间创建一个映射器时,
编译代码时,我收到警告:

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 的特定字段,
来 self 所有的映射器,但不排除我未使用的其他字段。

有什么办法可以实现这一点吗?

最佳答案

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

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

附注。不必添加@Mapping(source = "say", target = "say")MapStruct自动映射同名属性

关于java - 排除mapstruct中的特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48509231/

相关文章:

java - 设置 XY 图上点标签的格式

Java Jackson 解析动态 JSON 对象

c - 使用内存映射逐 block 打开和读取大文件 (100GB)

java - 如何在 Java Swing 中为 JCombobox 项目提供两种形式

vim - 粘贴到 Vim 时如何避免出现额外的括号

java - 当目标具有与源同名的变量时,使用自定义源和目标变量的 @Mapping 无法按预期工作

java - 当数组大小增加时找到第 n 个最大的数字(多次)

java - MapStruct 按原样映射嵌套 bean

java - Micronaut 中 MapStruct 生成类的 NoSuchBeanException

java - 在 Java 中更改 BMP 图像的 DPI