【发布时间】:2018-10-13 15:14:43
【问题描述】:
有没有办法指示 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。
注意:我不想总是忽略值,我只是不想在它们存在时覆盖它们。
我尝试查看这里的几种映射策略:http://mapstruct.org/documentation/stable/reference/html/,但它们似乎都不适合。
【问题讨论】:
-
MapStruct 目前不支持此功能。通常,当人们更新对象时,他们想要更改目标实例中的字段。你正在尝试做其他事情。您能否提供一些关于您到底想做什么的解释,也许还有其他方法可以解决您的问题
标签: java spring spring-boot mapstruct