新聞中心
Hibernate中onetomany hibernate設(shè)置cascade="all"的話,那么在進(jìn)行聯(lián)機(jī)操作的時(shí)候,如果把一端設(shè)置成inverse="false",比如one的一方,那么many一方的與one一方失去關(guān)聯(lián)關(guān)系的數(shù)據(jù)不會(huì)被刪除掉,而是將關(guān)聯(lián)外鍵設(shè)置為null,出現(xiàn)了孤立的數(shù)據(jù)!解決辦法就是設(shè)置 cascade="all-delete-orphan"。然而這種簡單的設(shè)置,會(huì)出現(xiàn)問題。

創(chuàng)新互聯(lián)主要從事做網(wǎng)站、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)渭城,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
org.springframework.orm.hibernate3.HibernateSystemException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: xxx.Aaa.bbbList; nested exception is org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: xxx.Aaa.bbbList
Caused by: org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: xxx.Aaa.bbbList
參考了論壇中的一些關(guān)于Hibernae中cascade的帖子,知道如下辦法可以解決:
1 在實(shí)體中把setBbbList方法設(shè)置成私有private
2 在實(shí)體中增加如下方法:
public void addBbbList(Bbb b) {
getBbbList().add(b);
b.setAaa(this);
}
3 設(shè)置cascade="all-delete-orphan"
4 在dao中
DAO dao= (DAO) BeanFactory.getBean("dao");
Aaa a = dao.getAaaById(id);
a.getBbbList().clear();
a.addBbbList(b1);
a.addBbbList(b2);
a.addBbbList(b3);
dao.update(a);
這樣與a關(guān)聯(lián)的b1 b2 b3會(huì)同步到數(shù)據(jù)庫,之前與a關(guān)聯(lián)的子表數(shù)據(jù)將會(huì)被自動(dòng)刪除。
分享名稱:對(duì)Hibernate的cascade解釋
當(dāng)前URL:http://m.5511xx.com/article/dppjhhj.html


咨詢
建站咨詢
