NHibernate约束违反了问题

时间:2016-09-18 07:56:54

标签: nhibernate nhibernate-mapping

我的代码中有两个实体参与多对一关系。问题是,当我尝试删除父母时,它说:

  

ORA-02292:违反完整性约束 - 找到子记录

如下所示,我的项目中有一个用户安全参数实体,可以将相关的子项称为Exceptional User Security参数。 我希望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 个答案:

答案 0 :(得分: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" 

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