2014-07-21 32 views
-1

我有一個使用hibernate和spring在java中編寫的web應用程序。tomcat會話中的Hibernate實體

在我的應用程序中,我需要加載一個大的hibernate實體,附加並重新附加到tomcat會話(如嚮導)並在最後保存此修改後的實體。

有沒有辦法將實體連接並重新連接到休眠會話?

其實,我需要映射所有的子實體與fetchMode EAGER ...否則我有lazyinitializationexception。我試過用「hibernateSession.lock(entity,LockMode.NONE)」,但它不起作用。

我有第二個問題,保存實體時發生;事實上,在調用實體DAO的合併方法之前,我需要從DataBase重新加載實體併合並實體後,否則刪除的實體的數據將不會從DataBase中刪除... 這聽起來很奇怪!

你有什麼建議嗎?

在此先感謝。

回答

0

網絡會話完全獨立於休眠狀態。您將序列化實體(及其子組件),然後將已更改的實體反序列化。

逸岸,前呼籲實體DAO的合併方法,我需要 從數據庫

這是不正確重裝的實體,合併:

複製的狀態給定對象到具有相同標識符的持久對象上。

+0

因此,對於第一個問題,我認爲沒有什麼可做的,而對於第二個問題(實體合併),解決方案是什麼?你需要一些代碼的樣本? – user3363936

+0

當您調用具有正確ID分配的實體的合併時會發生什麼?你期望發生什麼,會發生什麼?寫測試/查看日誌。然後在這裏顯示代碼... – NimChimpsky

+0

當我調用合併時,實體的屬性和子類被插入或更新,所以它可以正常工作......但是如果我刪除一個映射爲ontToMany的元素,它不會從DataBase中刪除。所以我希望它會被刪除。而如果在合併之前,我再次加載entoty元素將從數據庫中刪除... – user3363936