在ModelMapper中全局跳过字段

时间:2014-09-15 06:57:59

标签: java jax-rs modelmapper

我正在使用ModelMApper将对象从DTO映射到Impl - 在反序列化对象时。这与JAxRS结合使用。当用户发出POST / PUT请求时,我不想要" id"永远被映射。

我需要跳过" id"所有映射的字段。我不想一个接一个地做这个,因为所有类都没有必要的显式地图。如何配置映射器以跳过所有" id"从所有DTO到Impls映射的字段。

谢谢

2 个答案:

答案 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)