Java Mapstruct在不覆盖的情况下更新值

Java Mapstruct在不覆盖的情况下更新值,java,spring,spring-boot,mapstruct,Java,Spring,Spring Boot,Mapstruct,是否有方法指示MapStruct不要覆盖目标中的值 例如: public interface IMyMapper { IMyMapper INSTANCE = Mappers.getMapper(IMyMapper.class); @Mappings({ @Mapping(target = "foo", source = "source.FOO"), @Mapping(target = "bar", source = "source

是否有方法指示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
覆盖
asdf

注意:我不想总是忽略值,我只是不想覆盖它们(如果它们存在)


我在这里尝试了几种映射策略:但它们似乎都不合适。

我们目前正在讨论这一点。有一个悬而未决的问题。注意那个。对于BeanMapping,所有当前策略都应用于BeanMapping级别,而不是属性级别。因此,NullValueMappingStrategy告诉您当输入bean(或者Map,或者MapMapping中的列表IterableMapping)为null时会发生什么。(直到不久之前)没有您想要的东西。

这在MapStruct中目前不受支持。通常,当人们更新对象时,他们希望更改目标实例中的字段。你正在尝试做其他事情。你能解释一下你到底想做什么吗?也许有其他方法可以解决你的问题。我是MapStruct的作者之一。