Логическое значение defaultValue MapStruct - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь установить defaultValue для логического поля с помощью MapStruct, но сгенерированный код просто игнорирует его.

Мой код:

public class CreateEventRequest {

    @NotNull
    @JsonProperty
    private Boolean isPrivate;

    @JsonProperty
    private Boolean friendCanInviteFriends;

    @JsonProperty
    private boolean showGuestList;

    public boolean isPrivate() {
      return isPrivate;
     }

     public String getDescription() {
       return description;
     }

      public boolean isFriendCanInviteFriends() {
        return friendCanInviteFriends;
     }

      public boolean isShowGuestList() {
        return showGuestList;
     }
}

Мой картограф:

@Mapper(componentModel = "spring")
public interface CreateEventRequestMapper {
    @Mapping(target = "showGuestList", source = "showGuestList", defaultExpression = "java(true)")
    @Mapping(target = "friendCanInviteFriends", source = "friendCanInviteFriends", defaultValue = "true")
    Event map(CreateEventRequest request);
}

Сгенерированный код:

public class CreateEventRequestMapperImpl implements CreateEventRequestMapper {

    @Override
    public Event map(CreateEventRequest request) {
        if ( request == null ) {
            return null;
        }

        Event event = new Event();

        event.setShowGuestList( request.isShowGuestList() );
        event.setFriendCanInviteFriends( request.isFriendCanInviteFriends() );
        event.setPrivate( request.isPrivate() );

        return event;
    }
}

Как видите, я пробовал использовать примитивный / непримитивный тип, но он просто игнорирует defaultValue.

Я здесь что-то не хватает?

Спасибо!

1 Ответ

2 голосов
/ 30 мая 2020

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

MapStruct не поддерживает прямое закрытое поле доступ, требующий размышлений.

...