国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
hibernate on-to-many 的級聯(lián)操作解決步驟 clear(),add()
hibernate on-to-many 的級聯(lián)操作解決步驟(Don't dereference a collection with cascade="all-delete-orphan") [轉(zhuǎn)貼 2007-04-19 15:47:21]
 
 
字號:

這個問題很久以前我遇見過,找到了解決辦法,原出處已經(jīng)忘了,文章如下:

 

比如我們現(xiàn)在有一個Parent的實體,在Parent實體當(dāng)中有一個children的Set
由于這個children的數(shù)據(jù)并非非常重要,為了方便,我們在修改parent的時候,做法經(jīng)常都是
1,清空children全部刪了,再把新的children全部加進去。
今天早上做這一方面工作的時候遇到一個問題,就是在更新parent的時候,報了一個
Don't dereference a collection with cascade="all-delete-orphan"
的異常,經(jīng)常一半個小時的查資料和調(diào)試,終于找到了解決問題的辦法
剛剛開始我的做法為:
parent = parentService.findParentById(id);
parent.getChildren.clear();
parent.setChildren(newChildren);
parentService.updateparent(parent);
這樣做一定會報出一個Don't dereference a collection with cascade="all-delete-orphan"的異常
原來是,對于parent的children這個Set,它本身是一個持久的集合,該集合存在于hibernate的對象池當(dāng)中,通過
parent.setChildren(newChildren)的設(shè)置之后,本身已經(jīng)將parent對children集合的引用指到對象池外的一個集合。
后來查詢資料后的做法為:
parent = parentService.findParentById(id);
parent.getChildren.clear();
parent.getChildren.addAll(newChildren);
parentService.updateparent(parent);
做了幾次測試,問題解決。
hbm配置如下:
<set lazy="true" name="children" cascade="all,delete-orphan" inverse="true">
   <key column="PARENT_ID"/>
   <one-to-many class="Child"/>
</set>
另外,hibernate 3已經(jīng)將cascade當(dāng)中的選項做了修改,現(xiàn)在已經(jīng)沒有了all-delete-orphan這個選項,雖然hibernate
內(nèi)部還是支持這個選項……

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Hibernate的cascade屬性 特別是 cascadeType.all的 作用
hibernate中inverse的用法
Hibernate4實戰(zhàn) 之 第四部分:關(guān)系映射
hibernate中cascade和inverse
Hibernate樹型結(jié)構(gòu)的算法,附源碼!
Hibernate中清除緩存對象方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服