#java #mapstruct
Вопрос:
Я использую mapstruct некоторое время, и это второй раз, когда я столкнулся с интересным (я думаю, что это ошибка, но я в этом не уверен) поведением, когда я использую стратегию nullvaluepropertymapping.SET_TO_NULL nullvaluepropertymappingстратегия.
Способ отображения:
@BeanMapping(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.SET_TO_NULL)
public Product patch(@MappingTarget Product target, PatchProductReqDto source);
Боб:
public final class PostProductCrudReqDto {
...
@ValidTranslation(optional = true)
private Map<String, String> description;
...
}
Сгенерированный код сопоставления:
...
if ( target.getDescription() != null ) {
Map<String, String> map1 = source.getDescription();
if ( map1 != null ) {
target.getDescription().clear();
target.getDescription().putAll( map1 );
}
}
else {
Map<String, String> map1 = source.getDescription();
if ( map1 != null ) {
target.setDescription( new HashMap<String, String>( map1 ) );
}
}
...
Как вы можете видеть, если целевое «описание» не равно нулю, но является исходным, то цель вообще не будет изменена.
В то время как я использую стратегию nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.Стратегия SET_TO_NULL Я ожидаю, что целевое «описание» должно быть равно нулю после вызова метода исправления сопоставления.
(Я также пробовал это поведение с последней версией mapstruct: 1.4.2.Final, но с теми же результатами)
Я ошибаюсь?
Есть ли какой-либо способ заставить mapstruct установить для карты назначения значение null, если исходная карта равна null?
Большое вам спасибо, хорошего дня.
Комментарии:
1. Это действительно похоже на ошибку. Не могли бы вы, пожалуйста, создать проблему?