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;
}
在我的 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;
}