让我们说我有两个表 - "孩子"和"父母"有多对一的关系.如果父记录被删除,我需要删除子条目.
如果我通过在parent.hbm中创建一对多关联并设置cascade ="all-delete-orphan"来链接子表,则不会出现问题.
问题是我不希望在父方面有一对多关系,所以我在子方面创建了多对一关系.原因是子表非常大,我不想每次使用父表时提取数百条记录.所以我的配置如下所示:
child.hbm:
而parent.hbm与child没有关联.
问题是:如果子项链接到具有多对一的父项,如何在删除父项时从子表中删除Hibernate记录?
谢谢.
几种选择:
使用级联删除将一对多添加到父级,但使用延迟加载可以减轻性能损失.
使用Hibernate Interceptor(或AOP环境中的一个方面)来检测父记录删除和删除子项.
我个人赞成第一个选项,因为它可以让您的数据模型更接近地反映数据中的真实关系.
编辑:有第三个选项,但它不愉快 - 使用数据库触发器,并刷新您的Hibernate缓存(或使用非缓存会话).