3

我正在使用 ModelMApper 将对象从 DTO 映射到 Impl - 在反序列化对象时。这是结合 JAxRS 完成的。当用户发出 POST/PUT 请求时,我不希望“id”被映射。

我需要跳过所有映射的“id”字段。我不想一一做这件事,因为不一定有所有类的显式映射。我如何配置映射器以跳过所有 DTO 到 Impls 映射的所有“id”字段。

谢谢

4

2 回答 2

8

一种方法是使用条件有条件地映射(或不映射)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”的任何目标属性的映射。

于 2014-09-15T19:56:26.893 回答
3

@Jonathan 的解决方案对我有用,只需稍作修改。我不得不改变

public boolean applies(MappingContext<S, D> context)

public boolean applies(MappingContext context)
于 2014-10-15T16:39:51.417 回答