2012-04-24 111 views
1

Hibernate,正如我所知,一旦連接的對象在會話的值發生變化時就更新數據庫。有沒有辦法從數據庫中獲取全新副本並重新安裝丟棄更改對象的新副本?刷新數據庫中Session對象的對象Hibernate

以下是我從使用Hibernate查詢數據庫中獲得的一個對象。

Rtpmast rtpmast = (Rtpmast) iterator.next(); 

一旦執行下面的代碼

rtp.setRptval1(promotionMethod.getType()); 

休眠寄存器,該對象已經改變。當我稍後提交事務或查詢數據庫時會話被刷新?

我想要的是暫時更新Rtpmast object並稍後放棄更改的對象。

+0

我發現鉛 - 休眠evict()方法 – Chan 2012-04-24 06:32:21

回答

5

休眠,因爲我知道更新數據庫一旦附加對象 在會話的價值改變。

實際上,Hibernate在調用session.save(...),session.delete(...)等方法後才更新數據庫。如果您正在進行交易,您還需要更改commit

你需要的是既可以使用evict()並重新查詢對象,如你所提到的,或者斷開你的工作實例,這意味着你需要close()Session(還有其他的,沒有價值的,方法如上所述here)。

+0

哦謝謝...我需要關閉()會話來分離對象嗎? – Chan 2012-04-24 07:44:04

+0

這是典型的方法之一。 – yair 2012-04-24 09:07:31