2013-06-12 90 views
0

假設我在數據庫中有兩個記錄,其中包含以下字段:無法使用Hibernate更新記錄

1 A,A,A; 2 B,B,B;

所有字段的組合應該是唯一的。假設我正在嘗試執行更新以使我的記錄如下所示:

1 B,B,B; 2 A,A,A;我正在使用Session.saveOrUpdate(實體)方法來做到這一點,但提交失敗,主要是因爲我試圖更新實體1的值,這是代表現有的實體2和唯一的約束塊此更新。

如何避免這種情況並正確更新?

謝謝。

回答

0

您應該:

  • 啓動一個會話和交易
  • 裝入兩個記錄
  • 更新這些記錄的值
  • 提交事務

saveOrUpdate沒有按」必須在該場景中使用,因爲您只更新現有記錄。

+0

真棒,但是如果7000個用戶一次加載10000條記錄會怎麼樣?有沒有其他方法? –

+0

如果你有這麼多的併發更新,你需要仔細選擇你的鎖定策略。選項是悲觀鎖定(數據庫鎖定行),樂觀鎖定(更新失敗,如果另一個用戶更新了同一行),沒有鎖定(上次提交勝利),... – Guillaume