Java Spring JPA主键冲突,第二次调用时级联所有
我有两门课:Java Spring JPA主键冲突,第二次调用时级联所有,java,spring,spring-data-jpa,Java,Spring,Spring Data Jpa,我有两门课: @Entity class Foo { @Id private Long id; @Column private String value; @ManyToOne(cascade = CascadeType.ALL) private SubFoo subFoo; //getters and setters } 及 我的测试创建请求是 { "value": "bar", "subFoo" : { "id" : "su
@Entity
class Foo {
@Id
private Long id;
@Column
private String value;
@ManyToOne(cascade = CascadeType.ALL)
private SubFoo subFoo;
//getters and setters
}
及
我的测试创建请求是
{
"value": "bar",
"subFoo" : {
"id" : "sub1"
}
}
我现在的目标是:如果我第一次发布这个主体,我希望这两个实体都被持久化,因为Foo和subfo都不存在。为了在没有更多代码行的情况下实现这一点,我添加了cascade-ALL选项
当该主体现在第二次发布时,它应该只获取“sub1”并将其绑定到第二个实体。但Hibernate会尝试第二次持久化id为“sub1”的子对象,这会导致主键冲突
我的问题是,是否有任何方法可以声明实体,我可以使用hibernate发布JSON两次,自动识别何时保存或何时绑定,而无需手动检查
提前感谢查看此链接可能会有所帮助查看此链接可能会有所帮助
{
"value": "bar",
"subFoo" : {
"id" : "sub1"
}
}