2016-09-18 123 views
0

我的代碼中有兩個參與多對一關係的實體。問題是,當我嘗試刪除它說父:NHibernate約束違規問題

ORA-02292:誠信約束違反 - 子記錄發現

正如你可以看到下面有一個用戶安全參數實體我項目可以有相關的孩子稱爲特殊用戶安全參數。 我期待的ORM當它要消除他們的父母

<bag name="ExeptionalUserSecurityParameters" inverse="true" lazy="false" access="property" cascade="none" batch-size="256"> 
     <key> 
     <column name="Key" /> 
     </key> 
     <one-to-many class="ExeptionalUserSecurityParameter"/> 
    </bag> 

<many-to-one name="UserSecurityParameter" cascade="all-delete-orphan" fetch="join" 
     class="UserSecurityParameters" > 
    <column name="Key" /> 
</many-to-one> 

我怎樣才能避免此問題刪除找到的子記錄?

回答

1

幾乎總是(當然,總是我使用級聯是這樣的:

//<bag name="ExeptionalUserSecurityParameters" cascade="none" ... 
<bag name="ExeptionalUserSecurityParameters" cascade="all-delete-orphan" ... 

//<many-to-one name="UserSecurityParameter" cascade="all-delete-orphan" 
<many-to-one name="UserSecurityParameter" cascade="none" 

應該解決的問題。如果集合所有者被刪除......誰曾經引用它 - 也被刪除。但不是反之亦然