2010-08-25 31 views
1

上午使用hibernate merge方法,處理來自實體的分離實例,我認爲這個方法的返回將是一個新的從數據庫中提取的實例作爲hibernate saveOrUpdate方法,但事實並非如此,我認爲它是邏輯,因爲它是一個分離的情況下,那麼有沒有一種更好的方式來回報新實例,而不是使用findById,在hibernate中使用合併後刷新實體實例?

問候,

回答

1

merge方法複製傳遞的對象的狀態與同一個持久化實體標識符(即已經與會話相關聯或將被加載),然後返回對該持久實體的引用。作爲參數傳遞的對象未附加到會話中。

所以,除非我不明白的問題,我想你應該做這樣的事情:

Foo mergedFoo = session.merge(foo); 
+0

是你得到它的正確,你的答案是明確的,但它是我的問題:),我想通過調用findById來獲得原始對象的唯一方法是,在合併之後,thnx先生爲您的答案,Regards – 2010-08-26 08:37:41

+0

@Amr我不明白。使用mergedFoo有什麼問題? – 2010-08-26 10:05:32

+0

mergedFoo是合併後的新實例,返回不更新版本哦反映所有數據庫更改的對象 – 2010-09-02 08:24:07

相關問題