理论不懂就实践,实践不会就学理论!
posted on 2006-02-24 20:05 BlueDavy 阅读(1701) 评论(6) 编辑 收藏 所属分类: Java
^_^,因为Session本身一级缓存,由于OSIV取的同一个session,所以是同一个对象。save(test)后,test已经从pojo转变为po,任何po的改动都会同步到数据库,但是代码中仅仅是testChild.setParent(test),而没有test.addChild(testChild),所以仅仅是testChild发生了变化,test没有任何改动,session中仍然保存的是以前的test。重新开一个session会读取会得到带有child的test,或者用get()方法。 回复 更多评论
看一下它,对你有帮助,http://www.blogjava.net/asktalk/archive/2006/01/18/28548.html 回复 更多评论
恩,多谢asktalk,^_^ 回复 更多评论
在 dao.getById(..) 前叫: session.clear() 或 session.evict(test). 可清理一級緩存, 迫 hibernate 重新讀取. 回复 更多评论
恩,已经这么做了,多谢,^_^ 回复 更多评论
可以用session.refresh()进行强行读取就OK了。 我么项目的Category也是自影射,修改完以后child就没有了。只要refresh一下就OK了。 回复 更多评论