当前位置:  开发笔记 > 编程语言 > 正文

Hibernate:如果子节点链接到父节点多对一,如何在删除父节点时从子表中删除Hibernate记录?

如何解决《Hibernate:如果子节点链接到父节点多对一,如何在删除父节点时从子表中删除Hibernate记录?》经验,为你挑选了1个好方法。

让我们说我有两个表 - "孩子"和"父母"有多对一的关系.如果父记录被删除,我需要删除子条目.

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

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

child.hbm:


而parent.hbm与child没有关联.

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

谢谢.



1> Dan Vinton..:

几种选择:

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

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

我个人赞成第一个选项,因为它可以让您的数据模型更接近地反映数据中的真实关系.

编辑:有第三个选项,但它不愉快 - 使用数据库触发器,并刷新您的Hibernate缓存(或使用非缓存会话).

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有