簡體   English   中英

視圖合並中的Java Hibernate會話會丟失更改嗎?

[英]Java Hibernate Session in View Merge loses Changes?

我有一個Hibernate APP,我們正在嘗試使用ZK Open Session in View Pattern實現Open Session in View Pattern我有一個問題,Hibernate為每個線程創建一個會話並關閉它,但是在我們開始使用的一個會話中,我們有幾個使用[criteria and save or update]方法的操作。使用更新方法實現我們很快就收到了臭名昭著的通知

NONUNIQUEOBJECTEXCEPTION 

如果發生以下情況,我們已將update()更改為merge()我的問題。

如果我有一個Student班級,並嘗試使用update[making sure is not in session avoid the exception]來更新該學生,但是以后在另一種方法中,該學生需要再次不同於先前的update這次我們應該mergingmerge()方法被調用。 我想知道什么時候[flush][commit]方法被稱為第一個學生的更改丟失? 對兩個學生的更改都可以嗎? 怎么了??

恐怕第一個student的變化是損失! 在這種情況下我該怎么辦?

非常感謝。

您應該看看鎖定算法。 流行的有2種:樂觀和悲觀。 對於Web應用程序,樂觀鎖定通常效果更好。 長話短說,實體對象的每個修訂版都有一個版本標簽(通常是bigint或字符串db列)。 當有人搶占您的更新並且您的版本過時時,休眠將拋出樂觀鎖異常,在這種情況下,您可以捕獲並詢問用戶該怎么做(或采取其他適當措施)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM