我正在使用 ModelMApper 将对象从 DTO 映射到 Impl - 在反序列化对象时。这是结合 JAxRS 完成的。当用户发出 POST/PUT 请求时,我不希望“id”被映射。
我需要跳过所有映射的“id”字段。我不想一一做这件事,因为不一定有所有类的显式映射。我如何配置映射器以跳过所有 DTO 到 Impls 映射的所有“id”字段。
谢谢
我正在使用 ModelMApper 将对象从 DTO 映射到 Impl - 在反序列化对象时。这是结合 JAxRS 完成的。当用户发出 POST/PUT 请求时,我不希望“id”被映射。
我需要跳过所有映射的“id”字段。我不想一一做这件事,因为不一定有所有类的显式映射。我如何配置映射器以跳过所有 DTO 到 Impls 映射的所有“id”字段。
谢谢
一种方法是使用条件有条件地映射(或不映射)id 属性。像这样的东西(未经测试):
Condition skipIds = new Condition() {
public boolean applies(MappingContext<Object, Object> context) {
return !context.getMapping().getLastDestinationProperty().getName().equals("id");
}
};
modelMapper.getConfiguration().setPropertyCondition(skipIds);
这将skipIds
条件设置为全局用于所有属性,以便将跳过值到名称为“id”的任何目标属性的映射。
@Jonathan 的解决方案对我有用,只需稍作修改。我不得不改变
public boolean applies(MappingContext<S, D> context)
至
public boolean applies(MappingContext context)