我的代码中有两个实体参与多对一关系。问题是,当我尝试删除父母时,它说:
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>
如何避免此问题?
答案 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"
应该解决这个问题。如果集合所有者被删除...谁曾引用它 - 也会被删除。但反之亦然