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.