ModelMapper 跳过一个字段

ModelMapper skip a field

我想在 UserDTOUser 之间映射,但不包括一个字段,比如 city。我该怎么做,因为我认为这种方法行得通,但行不通:

ModelMapper modelMapper = new ModelMapper();

modelMapper.typeMap(UserDTO.class,User.class).addMappings(mp -> {
    mp.skip(User::setCity);
});

由于泛型参数,我们无法使用 lambda 表达式。

ModelMapper modelMapper = new ModelMapper();
modelMapper.addMappings(new PropertyMap<Dto, Source>() {
                @Override
                protected void configure() {
                    skip(destination.getBlessedField());
                }
            });

要使配置正常工作需要添加:

modelMapper.getConfiguration().setAmbiguityIgnored(true);

例如

ModelMapper modelMapper = new ModelMapper();
modelMapper.getConfiguration().setAmbiguityIgnored(true);
modelMapper.addMappings(clientPropertyMap);
modelMapper.map(UserDTO, User);


PropertyMap<UserDTO, User> clientPropertyMap = new PropertyMap<UserDTO, User>() {
    @Override
    protected void configure() {
        skip(destination.getCity());
    }
};

For the configuration to work need to add:
modelMapper.getConfiguration().setAmbiguityIgnored(true);

仅当目标字段与多个源字段匹配时才成立。如果源-目标之间存在 1-1 或 0-1 匹配,则跳过目标字段的设置将在没有上述内容的情况下工作。