我有2个班级:
@Entity
class Foo {
@Id
private Long id;
@Column
private String value;
@ManyToOne(cascade = CascadeType.ALL)
private SubFoo subFoo;
//getters and setters
}
和
@Entity
class SubFoo {
@Id
private String id;
//getter setter
}
我的测试创建请求是
{
"value": "bar",
"subFoo" : {
"id" : "sub1"
}
}
我的目标如下:如果我第一次发布该主体,我希望两个实体都保持不变,因为Foo和SubFoo都不存在。为了使这项工作没有进一步的代码行,我添加了级联ALL选项。
当该主体现在第二次发布时,它应该只取“sub1”并将其绑定到第二个实体。但是Hibernate试图再次使用id“sub1”持久保存SubFoo,这会导致主键违规。
我的问题是,有没有办法声明实体,我可以通过hibernate自动识别何时保留或何时只是绑定而不进行手动检查两次发布我的JSON?
提前致谢