【问题标题】:Boolean defaultValue MapStruct布尔默认值 MapStruct
【发布时间】:2020-05-30 09:39:23
【问题描述】:

我正在尝试使用 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。

我错过了什么吗?

谢谢!

【问题讨论】:

  • CreateEventRequest 中的 getter 是什么样的?
  • 刚刚用 getter 编辑过!

标签: java mapstruct


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-03-22
    • 2012-10-29
    • 2015-01-11
    • 2020-05-21
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    相关资源
    最近更新 更多