【发布时间】:2021-03-07 22:59:57
【问题描述】:
为什么 JPA OneToOne(或者甚至是 OneToMany)的 orphanRemoval 默认为 false。
我的意思是,将删除操作强制到已从关系中删除的实体并默认将删除操作级联到这些实体并让用户选择不明确执行它不是更好吗?
如果只使用默认值,当前默认值为 false 的行为是否不会导致孤立条目(可能会成为僵尸记录)随着时间的推移可能导致数据库表膨胀?还是我在这里遗漏了什么?
谢谢
更新(2020 年 12 月 6 日):
我专门询问OneToOne 和OneToMany 是有原因的。至少在这两种情况下,据我了解,在大多数情况下,默认的删除行为是 most appropriate thing to do 而不是删除实际上是不推荐的,因此是这个问题。
更新了上一点的official oracle documentation 链接。同时引用以下部分以供快速参考,
当一对一或一对多关系的目标实体是 从关系中删除,通常需要级联 删除对目标实体的操作。此类目标实体是 被认为是“孤儿”,并且 orphanRemoval 属性可用于 指定应删除孤立实体。
【问题讨论】:
-
再次感谢@Lokesh 提供有用的想法和时间,希望您有机会查看我的回复……请让我知道您的想法。另外,是否有人对此有任何意见和想法?
标签: java hibernate jpa spring-data-jpa hibernate-mapping