有沒有辦法告訴Hibernate首先檢查由表生成器生成的當前主鍵是可用還是過時?休眠:更新表生成器
我有一個應用程序使用休眠在我的數據庫中的幾個表中創建新的條目,但有時這些生成的值已過時並已被使用。發生這種情況是因爲這個數據庫被很多應用程序和腳本所使用,其中一些使用「選擇MAX(ID)+1」 - 「生成」策略「。這並不是一個真正的選擇,可以將所有其他組件改爲使用表生成器(儘管它可以解決問題),所以我必須確保從表生成器獲得的值真的可用。
有沒有什麼辦法可以告訴Hibernate在嘗試向數據庫中插入新記錄(並拋出ConstraintViolationException)之前檢查生成的值的有效性? 或者,有沒有辦法在hibernate使用它們生成新的ID之前手動更新生成器表?
最明顯的方法是運行像UPDATE pk_generator SET value=(SELECT MAX(ID)+1 from members) WHERE column='members'