gpt4 book ai didi

java - Hibernate:如果子项以多对一方式链接到父项,如何让 Hibernate 在删除父项时从子表中删除记录?

转载 作者:可可西里 更新时间:2023-11-01 07:05:50 24 4
gpt4 key购买 nike

假设我有两个表 - 具有多对一关系的“子表”和“父表”。如果父记录被删除,我需要的是删除子条目。

如果我通过在 parent.hbm 中创建一对多关联并设置 cascade="all-delete-orphan"来从父表链接子表,这不是问题。

问题是我不想在父端建立一对多关系,所以我在子端创建了多对一关系。原因是子表很大,我不想每次使用父表时都提取数百条记录。所以我的配置是这样的:

child .hbm:

<many-to-one name="parent" class="com.example.Parent" column="parentid"/>

而 parent.hbm 与 child 没有关联。

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

谢谢。

最佳答案

几个选项:

  • 使用级联删除将一对多添加到父级,但使用延迟加载减轻性能损失。

  • 使用 Hibernate Interceptor (或 AOP 环境中的一个方面)检测父记录删除和删除子记录。

就我个人而言,我更喜欢第一种选择,因为它可以让您的数据模型更准确地反射(reflect)数据中的真实关系。

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

关于java - Hibernate:如果子项以多对一方式链接到父项,如何让 Hibernate 在删除父项时从子表中删除记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/360026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com