以下運行平衡是一個表結構更新使用休眠在多用戶環境中
式
餘額=原始金額+餘額(前面)
50 = 50 + 0 ID(1)
200 = 150 + 50 ID(2)
相對於第二行,我們如何可使用休眠session.save()更新餘額;我試圖寫出插入查詢,但知道HQL不支持插入值,但從其他表中選擇。
In HQL, only the INSERT INTO … SELECT … is supported; there is no INSERT INTO … VALUES. HQL only support insert from another table.
[source]
如果使用休眠,I first get the balance of max id of customer 1
和then pass the balance to the new object
,那麼這將是OK!
但在多用戶環境下,由於one user get the balance of max id of customer 1
,與此同時other user insert the new row and update the balance
。那麼獲得餘額的第一個用戶是舊的because when first user transaction geting the balance other user insert new row and update balance
。在這種情況下,第一個用戶事務處理會在更新第二個用戶事務之前插入相對於之前獲得的餘額的錯誤餘額。
休眠是否有公告功能來控制這種情況?
我們如何使用hibernate session.save()以最新的餘額保存事務。 ?
更新我!
應該如何冬眠知道第2排的依賴於第1行的一些疑問? – xwoker