我正在研究spring-hibernate-envers應用程序。很多谷歌搜索的東西終於爲我工作,但我仍然有幾個問題。hibernate envers:merge&saveOrUpdate
早些時候,我使用
saveOrUpdate
爲 保存或更新實體。但 在與envers工作時是 拋出nonUniqueObject
異常。所以我用merge
而不是 它工作。爲此使用 合併是否正確?merge
是否將 新對象插入到db?我嘗試下面的代碼:
entity=merge(entity); saveOrUpdate(entity);
這也工作過。這是正確的方式嗎?而且我很好奇,爲什麼saveOrUpdate
現在沒有拋出任何錯誤。
好吧,所以如果我不確定具有相同ID的對象可能與會話相關聯,我應該與合併。正如你已經提到的合併也插入新的對象到數據庫,應該沒有問題。合併還需要更多資源,然後saveOrUpdate?感謝您的回答。 – parbi 2011-03-15 13:12:32
@parbi:與'saveOrUpdate'相比,'merge'會生成一個額外的SQL查詢,因爲'saveUpdate'使用標識符來確定是否應該保存對象,而merge將對數據庫進行檢查。 – axtavt 2011-03-15 13:30:08
您確定這條語句:merge()的結果是一個持久對象,因此它被saveOrUpdate()忽略,所以第二行沒有任何意義。正如你的回答所述,合併後對象仍然被分離 – fabien7474 2011-09-22 06:54:55