Mapstruct не устанавливает значение null для структур данных карты

#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. Это действительно похоже на ошибку. Не могли бы вы, пожалуйста, создать проблему?