一對多在多端級聯操作報級聯刪除引用錯誤的異常

2021-08-19 23:28:43 字數 1137 閱讀 2116

異常描述

本人在編寫一對多實體的級聯操作時需要進行新實體的新增和老實體的刪除,所以當下的思路是將整個set物件置空然後重新新增。但是由於置空的方法對於jpa底層的hibernate來說非法所以報了如下的異常。

org.springframework.orm.jpa.jpasystemexception:

a collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: com

.intelligent

.smartpark

.rent

.jpa

.repository

.model

.estatepotentialclient

.shoplist

; nested exception is org.hibernate.hibernateexception: a collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: com.intelligent.smartpark.rent.jpa.repository.model.estatepotentialclient.shoplist

錯誤解釋

本人報錯時對其集合進行置空**如下,這就使得jpa在檢測時發現物件的引用已經發生了變化,並且在執行級聯刪除的操作所以就報了上面的異常資訊。

// shopset is the attribute

ofentity which is onetomany

shopset = new hashset<>();

解決方案

根據上述的異常資訊可以得出:本人是因為在進行集合置空操作時將物件new乙個新的例項而導致的引用檢查不通過異常,所以在進行置空操作時用集合自帶的清空方法就能解決該異常。經過分析後使用如下**替換之前的置空操作時將不會丟擲上述異常。

shopset.clear();

Hibernate 一對多級聯刪除

背景 系統中有post 表和replay 表。分表表示帖子和帖子回覆的表。一篇帖子可以有多個回覆。要求 現在要求刪除一篇帖子的同時刪除對應的replay 表中該帖子的所有回覆。實現 在post.hbm.xml 中這樣配置 即在 一方 的hbm.xml檔案中 set name replaies inv...

criteria級聯查詢 一對一但雙向關聯

有這麼乙個關係對映 我需要使用roe 降序 排列,然後再把stock查出來,然後就可以遍歷得到stock在這個查詢結果中的排名 roe 多方 雙向 stock 雙向 hydm 方案 1使用stock作為查詢主體,新增hydm作為條件,然後使用roe的reportvalue作為查詢條件,然後再用roe...

對MySQL進行新建 修改外來鍵級聯刪除操作

主要進行子表操作 一 如果表已建 1.先刪除約束值 如果存在 alter table 子表 drop foreign key 唯一約束值 2.更新子表 alter table 子表 add constraint 唯一約束值 foreign key id references 主表 id on del...