可以说我有两张表 - “孩子”和“父母”之间有多对一的关系。我需要的是删除父记录时删除子条目。Hibernate:如何在删除父项时使Hibernate从子表中删除记录如果子项与多对一的父项链接?
如果我通过在parent.hbm中创建一对多关联并设置cascade =“all-delete-orphan”从父项链接子表,这不是问题。
问题是我不希望父对方有一对多的关系,所以我在孩子一方创建了多对一的关系。原因是子表非常大,我不想每次使用父母时提取数百条记录。 所以我的配置是这样的:
child.hbm:
<many-to-one name="parent" class="com.example.Parent" column="parentid"/>
而parent.hbm有孩子没有关联。
现在的问题是:如何让Hibernate从子表中删除记录时删除父项,如果一个子项与多对一的父项链接?
谢谢。
为什么不在你的家长中使用懒惰的一对多,而只是使用级联选项?当你使用父母时,你不会加载孩子。 – gcores 2008-12-11 16:52:13
这就是我的想法,但恐怕会给结构带来混乱。我将需要添加“设置儿童”字段到父类,不应该在代码中的任何地方使用,只用于休眠级联删除。你认为这样可以吗? –
serg
2008-12-11 16:56:19