Cascade = delete不会删除相关实体

时间:2019-08-27 10:46:42

标签: java sql database hibernate cascade

我确实有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

有任何线索吗?

2 个答案:

答案 0 :(得分:1)

您应该层叠delete-orphan
delete尝试通过清除FK字段来断开两个实体之间的链接。
delete-orphan将不会授权没有LimitsModel的一些User,因此将删除相关的LimitsModel记录。

答案 1 :(得分:0)

尝试

   <bag name="limits">
       <key column="USER_ID" on-delete="cascade"/>
       <one-to-many class="com.mac.kom.modules.limits.models.LimitsModel" />
    </bag>