Java Spring数据rest合并修补程序
我在我的项目中使用了spring数据rest,对此有疑问Java Spring数据rest合并修补程序,java,spring,spring-data-rest,Java,Spring,Spring Data Rest,我在我的项目中使用了spring数据rest,对此有疑问 应用程序/合并补丁+json请求。 虽然application/json-patch+json请求工作正常,但我在使用合并补丁时遇到了问题。 例如,我有一个没有存储库的嵌套对象,如下所示 "student":{ "id":1, "address":{ "id":1, "street":2, "building":2 } } 我正在将补丁,应用程序/合并补丁+json发送给学生/1 用这个有效载荷 { "a
应用程序/合并补丁+json
请求。
虽然application/json-patch+json
请求工作正常,但我在使用合并补丁时遇到了问题。
例如,我有一个没有存储库的嵌套对象,如下所示
"student":{
"id":1,
"address":{
"id":1,
"street":2,
"building":2
}
}
我正在将补丁
,应用程序/合并补丁+json
发送给学生/1
用这个有效载荷
{
"address":{
"street":3
}
}
我得到了这个结果
"student":{
"id":1,
"address":{
"id":2,
"street":3,
"building":null
}
}
所以SpringDataREST只是创建了新的地址对象,而不是合并
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
}
学生也有rest存储库,地址也没有
我的问题是如何在SpringDataREST中合并补丁请求时实现正确的行为?虽然这是延迟响应,但对其他有相同问题的人可能会有所帮助 在输入JSON中,缺少地址id
{
"address":{
"id" : 1,
"street":3
}
}
对于@ElementCollection映射,我也遇到了同样的问题。修补嵌套可嵌入对象的属性会删除整个映射并添加新的可嵌入对象。这是危险的行为