我正在使用Hibernate。服務作爲web服務公開。這項服務將由2個應用程序調用。該服務方法將記錄保存到數據庫中。使用hibernate的主鍵違規問題?
ServiceClass.java:
------------------
//Here Transaction will start
public void saveRecord(SampleEntity entity){
someDAO.saveData(entity);
}
SomeDao.java
-----------------
public void saveData(SampleEntity entity){
//record is saved using saveOrUpdate method
}
如果saveRecord
方法由兩個應用at a time
與相同的ID調用,PK violation exception
被拋出。
這兩個應用程序都在發送具有相同ID的記錄。
因爲我們正在使用saveOrUpdate
它應該更新記錄,如果它已經存在。
您必須從數據庫獲取現有實體並更新其值。如果它不存在(hibernate返回null),那麼你創建它。 – DominikM 2013-02-27 11:03:30
你是手動設置ID還是由Hibernate生成? – overmeulen 2013-02-27 11:05:57
我們做同樣的事情,但沒有用。我的直覺是,應用程序調用一個實體傳遞存儲方法,但在將記錄保存到數據庫之前,第二個應用程序也會打電話保存。由於應用程序尚未插入記錄,所以顯然DB不會有記錄。 – user1016403 2013-02-27 11:06:09