Spring Data Rest POST 响应不同于 GET 响应

Spring Data Rest POST response different from GET response

在我的 Spring Data Rest 项目中,我有一个 Competition 实体引用了一个 GeoLocation 实体:

public class Competition {
    @Id
    private String uname;

    [...]

    @NotNull
    @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
    private GeoLocation geoLocation;
}

public class GeoLocation {
    @Id private Long id;
    private Double latitude;
    private Double longitude;
}

由于每个 Competition 必须定义一个 GeoLocation,因此 Competition 实体通过 cascade 处理创建。通过 POST 创建新的 Competition 实体时,我收到以下响应:

{
    "uname": "Some Competition",
    "geoLocation": {
        [content of geoLocation]
    },
    "_links": {
        [...]
    }
}

但是当我调用新创建的比赛时,GeoLocation的内容将被包裹在一个content字段中。

{
    "uname": "Some Competition",
    "geoLocation": {
        "content": {
            [content of geoLocation]
        }        
    },
    "_links": {
        [...]
    }
}

我希望这两个请求会提供相同的响应?

@JsonUnwrapped 为我解决了这个问题:

public class Competition {
    @Id
    private String uname;

    [...]

    @NotNull
    @JsonUnwrapped
    @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
    private GeoLocation geoLocation;
}