ModelMapper пропустить поле

Я хотел бы отобразить между UserDTO а также User, но исключая одно поле, скажем city, Как я могу это сделать, потому что я думаю, что этот подход будет работать, но это не так:

ModelMapper modelMapper = new ModelMapper();

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

1 ответ

Из-за общих параметров мы не могли использовать лямбда-выражение.

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());
    }
};

Для работы конфигурации необходимо добавить:
modelMapper.getConfiguration (). SetAmbiguityIgnored(true);

Это верно только тогда, когда поле назначения совпадает с несколькими полями источника. Пропуск настройки поля назначения будет работать без вышеуказанного, если между источником и назначением будет совпадение 1-1 или 0-1.

Другие вопросы по тегам