Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据rest合并修补程序_Java_Spring_Spring Data Rest - Fatal编程技术网

Java 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

我在我的项目中使用了spring数据rest,对此有疑问
应用程序/合并补丁+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映射,我也遇到了同样的问题。修补嵌套可嵌入对象的属性会删除整个映射并添加新的可嵌入对象。这是危险的行为