Cascade=delete 不删除相关实体
Cascade=delete doesn't delete related entities
我有 2 个实体:
1. 用户
2.限制
用户有一组限制,因此存在一对多关系。我确实将级联类型设置为 delete
,因此当删除 User
时,也应删除所有相应的限制。
<bag name="limits" cascade="delete">
<key column="USER_ID"/>
<one-to-many class="com.mac.kom.modules.limits.models.LimitsModel" />
</bag>
当我尝试删除 User
时出现错误
Caused by: java.sql.SQLException: ORA-01407: cannot update ("DB"."LIMITS"."USER_ID") to NULL
有什么线索吗?
你应该级联delete-orphan
。
delete
试图通过清除 FK 字段来打破两个实体之间的 link。
delete-orphan
不会授权某些 LimitsModel
没有 User
,因此将删除相关的 LimitsModel
记录。
试试这个
<bag name="limits">
<key column="USER_ID" on-delete="cascade"/>
<one-to-many class="com.mac.kom.modules.limits.models.LimitsModel" />
</bag>
我有 2 个实体:
1. 用户
2.限制
用户有一组限制,因此存在一对多关系。我确实将级联类型设置为 delete
,因此当删除 User
时,也应删除所有相应的限制。
<bag name="limits" cascade="delete">
<key column="USER_ID"/>
<one-to-many class="com.mac.kom.modules.limits.models.LimitsModel" />
</bag>
当我尝试删除 User
时出现错误
Caused by: java.sql.SQLException: ORA-01407: cannot update ("DB"."LIMITS"."USER_ID") to NULL
有什么线索吗?
你应该级联delete-orphan
。
delete
试图通过清除 FK 字段来打破两个实体之间的 link。
delete-orphan
不会授权某些 LimitsModel
没有 User
,因此将删除相关的 LimitsModel
记录。
试试这个
<bag name="limits">
<key column="USER_ID" on-delete="cascade"/>
<one-to-many class="com.mac.kom.modules.limits.models.LimitsModel" />
</bag>