理論不懂就實(shí)踐,實(shí)踐不會(huì)就學(xué)理論!
posted on 2006-02-24 20:05 BlueDavy 閱讀(1709) 評(píng)論(6) 編輯 收藏 所屬分類: Java
^_^,因?yàn)镾ession本身一級(jí)緩存,由于OSIV取的同一個(gè)session,所以是同一個(gè)對(duì)象。save(test)后,test已經(jīng)從pojo轉(zhuǎn)變?yōu)閜o,任何po的改動(dòng)都會(huì)同步到數(shù)據(jù)庫(kù),但是代碼中僅僅是testChild.setParent(test),而沒有test.addChild(testChild),所以僅僅是testChild發(fā)生了變化,test沒有任何改動(dòng),session中仍然保存的是以前的test。重新開一個(gè)session會(huì)讀取會(huì)得到帶有child的test,或者用get()方法。 回復(fù) 更多評(píng)論
看一下它,對(duì)你有幫助,http://www.tkk7.com/asktalk/archive/2006/01/18/28548.html 回復(fù) 更多評(píng)論
恩,多謝asktalk,^_^ 回復(fù) 更多評(píng)論
在 dao.getById(..) 前叫: session.clear() 或 session.evict(test). 可清理一級(jí)緩存, 迫 hibernate 重新讀取. 回復(fù) 更多評(píng)論
恩,已經(jīng)這么做了,多謝,^_^ 回復(fù) 更多評(píng)論
可以用session.refresh()進(jìn)行強(qiáng)行讀取就OK了。 我么項(xiàng)目的Category也是自影射,修改完以后child就沒有了。只要refresh一下就OK了。 回復(fù) 更多評(píng)論