首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate:在删除父表时,如何使Hibernate从子表中删除记录,如果子表与父表有多对一的链接?

Hibernate:在删除父表时,如何使Hibernate从子表中删除记录,如果子表与父表有多对一的链接?
EN

Stack Overflow用户
提问于 2008-12-11 16:45:07
回答 1查看 19.9K关注 0票数 5

假设我有两张桌子--“孩子”和“父母”,有着多对一的关系。如果父记录被删除,我需要删除子条目。

如果我通过在parent.hbm中创建一对多的关联并设置cascade=“所有删除-孤儿”来链接父表,这不是一个问题。

问题是,我不想在父母一方建立一对多的关系,所以我在孩子方面建立了多对一的关系。其原因是子表非常大,每次使用父表时,我都不想提取数百条记录。我的配置如下所示:

child.hbm:

代码语言:javascript
复制
<many-to-one name="parent" class="com.example.Parent" column="parentid"/>

而parent.hbm与儿童没有关联。

问题是:如何使Hibernate在删除父表时从子表中删除记录,如果一个子节点链接到具有多对一的父表?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-12-11 20:09:34

有几种选择:

  • 使用级联删除将一对多添加到父级,但使用延迟加载来减轻性能损失。
  • 使用Hibernate阻断器 (或AOP环境中的一个方面)检测父记录删除和删除子记录。

就我个人而言,我倾向于第一种选择,因为它使您的数据模型更紧密地反映了数据中的真实关系。

编辑:还有第三种选择,但这并不令人愉快--使用数据库触发器,并刷新Hibernate缓存(或者使用非缓存会话)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/360026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档