很抱歉,如果这是一个傻瓜,无法找到它,但真正地不知道该怎么寻找,反正...级联在(N)Hibernate中,我需要哪些规则?
我有三个班,Parent
,Child
和Other
Parent
有很多Child
哪里孩子有Parent_Id
列
Other
通过Child_Id
列保存到Child
参考
当我删除Parent
,我也想删除所有关联的Child
对象。如果这些Child
对象被任何Other
类引用,我希望它们的(Other
对象)Child_Id
引用无效。
这两个关系需要哪些级联规则?
此外,NHibernate会更新实体内存以及数据库中的实体吗?
I.e.如果我在内存中有一堆Parent
,Child
和Other
(即从db加载,而不是瞬态),并告诉NH删除Parent
,会发生什么情况?我假设Parent
和Child
对象会变成瞬态的?任何Other
对象的Child
属性会发生什么情况?
编辑:当使用All-Delete-Orphan时,什么类作为孤儿的对象?在上面的例子中,如果其父母Parent
被删除,是一个孤儿Child
?将实体视为孤儿时,参考Other
是否重要?
感谢
感谢您的澄清。如果我有一对一的从“孩子”到“其他”我可以设置级联保存更新,这会给我我需要的功能,对吧?除了我不想要有双向关系外,我只想从“其他”到“孩子”,而不是其他方式。 – 2009-08-24 12:25:56
我不会保存更新其他因为你救了孩子。假设他是一个独立的实体,它是独立于孩子创建和删除的,它不应该通过创建一个孩子而被隐式创建。对我而言,这是一种最佳做法。我不是为什么你认为这会解决你的问题。无论如何,您需要从其他人那里删除对其他孩子的引用。当然,你会发现引用Others更简单。 – 2009-08-24 12:44:12
嗯不,你是对的,确定不够。那么这是否意味着我需要将所有'Other'加载到内存中,然后取消它们的'Child'引用?似乎很贵:s – 2009-08-24 13:06:33