Boolean defaultValue MapStruct

问题描述 投票:0回答:1

我正在尝试使用MapStruct为布尔字段设置defaultValue,但是生成的代码只是忽略它。

我的代码:

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。

我在这里想念东西吗?

谢谢!

java mapstruct
1个回答
0
投票

问题是源对象中getter方法的返回类型始终是原始类型,不能为null,您需要返回Boolean

MapStruct不支持需要反思的直接私有字段访问。

© www.soinside.com 2019 - 2024. All rights reserved.