【发布时间】:2014-09-15 06:57:59
【问题描述】:
在反序列化对象时,我正在使用 ModelMApper 将对象从 DTO 映射到 Impl。这是结合 JAxRS 完成的。当用户发出 POST/PUT 请求时,我不希望“id”被映射。
我需要跳过所有映射的“id”字段。我不想一一做这件事,因为不一定有所有类的显式映射。如何配置映射器以跳过所有 DTO 到 Impls 映射的所有“id”字段。
谢谢
【问题讨论】:
标签: java jax-rs modelmapper
在反序列化对象时,我正在使用 ModelMApper 将对象从 DTO 映射到 Impl。这是结合 JAxRS 完成的。当用户发出 POST/PUT 请求时,我不希望“id”被映射。
我需要跳过所有映射的“id”字段。我不想一一做这件事,因为不一定有所有类的显式映射。如何配置映射器以跳过所有 DTO 到 Impls 映射的所有“id”字段。
谢谢
【问题讨论】:
标签: java jax-rs modelmapper
一种方法是使用条件有条件地映射(或不映射)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”的任何目标属性。
【讨论】:
modelMapper.validate() 时使用它似乎并不能防止Unmapped destination properties found 错误
<Object, Object>参数以避免java中的警告。
@Jonathan 的解决方案对我有用,只需稍作修改。我不得不改变
public boolean applies(MappingContext<S, D> context)
到
public boolean applies(MappingContext context)
【讨论】: