当前,当我删除狗实体时,其相关的狗窝实体也将被删除。
原因是您已
cascade=CascadeType.ALL设置
ManyToOne注释。这样,我们告诉ORM,当我们删除(或任何其他操作)时,
Dog它也应该将相同的操作传播到
Kennel实体。
Remove cascade attribute in ManyToOne(cascade = CascadeType.ALL ).
我可以保持狗舍中显示的@oneToMany关系相同吗?
您可能需要考虑的更改很少。
- 无需具有
JoinColumn
在两个注释oneToMany
和ManyTone
侧面。 - 考虑
mappedBy="kennel"
在OneToMany
注释中使用属性,并JoinColum
在OneToMany
侧面删除注释。这使得ManyToOne
拥有方,并且在持久化kennel
实体时所生成的SQL效率也更高。您可以通过启用自己进行检查show_sql
。 - 关于
cascade
将属性OneToMany
设置为ALL
或MERGE
或PERSIST, MERGE
取决于要传播到子实体的父实体上的操作的属性。 - 不知道您是否已经实现了脚手架代码/方法来添加/更新
oneToMany
关系。如果不是,则最好实现它们,因为这样可以确保在两端都更新关联。如果需要,请参考脚手架代码。



