我在我的项目中使用 spring data rest 并对此有疑问
application/merge-patch+json
请求。
虽然application/json-patch+json
请求工作正常,但我在使用merge-patch时遇到了麻烦。
例如,我有没有像这样的存储库的嵌套对象
"student":{
"id":1,
"address":{
"id":1,
"street":2,
"building":2
}
}
我将PATCH
,application/merge-patch+json
发送给students/1
使用此有效负载
{
"address":{
"street":3
}
}
我收到了这个结果
"student":{
"id":1,
"address":{
"id":2,
"street":3,
"building":null
}
}
因此Spring数据只是创建了新的地址对象而不是合并。
Java代码就像这样
@Entity
@Table(name = "Student")
public class Student {
@Id
@GeneratedValue
private long studentId;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "addressId")
private Address address;
//getters and setters
}
地址类:
@Entity
@Table(name = "Address")
public class Address {
@Id
@GeneratedValue
private long addressId;
private String street;
private String building;
//getters and setters
}
此外,学生还有休息库和地址
我的问题是如何在Spring数据休息中合并补丁请求时能够实现正确的行为?
答案 0 :(得分:0)
尽管它会延迟响应,但对遇到同样问题的其他人可能会有帮助
在输入的JSON中,缺少地址 id 。
{
"address":{
"id" : 1,
"street":3
}
}