Mapstruct 更新值而不覆盖

Mapstruct to update values without overwriting

有没有办法指示 MapStruct 不覆盖目标中的值?

例如:

public interface IMyMapper {
    IMyMapper INSTANCE = Mappers.getMapper(IMyMapper.class);
    @Mappings({
            @Mapping(target = "foo", source = "source.FOO"),
            @Mapping(target = "bar", source = "source.BAR2"),
    })
    void updateTargetEntity(@MappingTarget MyTarget target , MySource source);
}

class MyTarget {
 String a;
 String b;
 ...
}

class MySource {
 String a;
 String b;
 ...
}

例如 target 将有 a = "asdf",而 source 将有 a = "zzz",我不希望 zzz 覆盖 [=16] =].

注意:我不想总是忽略值,我只是不想在它们存在时覆盖它们。

我试图查看这里的几种映射策略:http://mapstruct.org/documentation/stable/reference/html/ 但其中 none 似乎适合。

我们目前正在讨论这个问题。有一个 PR 待处理。留意那个。对于BeanMappings,目前所有的策略都适用于BeanMapping层面,而不是属性层面。因此,NullValueMappingStrategy 告诉您当输入 bean(或 Map,或 MapMapping 中的 List,IterableMapping)为 null 时会发生什么。没有(直到不久)您正在寻找的东西。