我正在使用ModelMApper将对象从DTO映射到Impl - 在反序列化对象时。这与JAxRS结合使用。当用户发出POST / PUT请求时,我不想要" id"永远被映射。
我需要跳过" id"所有映射的字段。我不想一个接一个地做这个,因为所有类都没有必要的显式地图。如何配置映射器以跳过所有" id"从所有DTO到Impls映射的字段。
谢谢
答案 0 :(得分:7)
一种方法是使用条件来有条件地映射(或不)id属性。这样的事情(未经测试):
Condition skipIds = new Condition() {
public boolean applies(MappingContext<Object, Object> context) {
return !context.getMapping().getLastDestinationProperty().getName().equals("id");
}
};
modelMapper.getConfiguration().setPropertyCondition(skipIds);
这将为所有属性设置全局使用的skipIds
条件,以便将值映射到名称为&#34; id&#34;的任何目标属性。将被跳过。
答案 1 :(得分:3)
@Jonathan的解决方案对我有所改变。我不得不改变
public boolean applies(MappingContext<S, D> context)
到
public boolean applies(MappingContext context)