3
我們有一個在Load Balancer下運行的Web應用程序。兩個用戶正在嘗試執行相同的操作,例如,兩個用戶在同一時間創建相同的訂單,創建重複的訂單。在Spring中處理髒讀,使用JPA處理Hibernate
在一個事務提交之前,另一個請求正在檢查是否有任何order.It創建重複條目。兩個請求都試圖同時處理。
- 用戶A & B同時提交訂單。
- 用戶A的交易驗證,是否有相同訂單的任何現有條目。如果相同訂單沒有其他條目,則會創建條目。
- 用戶B的交易也驗證並創建相同。
- 如果A的交易完成,那麼B的交易不會發生。但事務提交之前,這兩種請求是有效的,所以它的同一筆訂單創建兩個條目(重複)
我們已經嘗試了下面的選項,
- 鎖與鎖類型的EntityManager作爲同步
- 隔離級別爲Serializable
但沒有作爲OPTIMISTIC_FORCE_INCREMENT
請提出如何繼續。
由於
您是否嘗試在數據庫中添加任何約束? –
當你說重複時,你是說訂單號碼是一樣的嗎?或者兩個用戶都試圖爲同一客戶輸入完全相同的訂單? –
@ AmmSokun-我們不能做數據庫約束。該訂單可能已取消。 – Pandiyan