2016-09-18 127 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" 

应该解决的问题。如果集合所有者被删除......谁曾经引用它 - 也被删除。但不是反之亦然