我正在編寫一個應用程序,將來自第三方數據源的實體同步到我們自己的模式中,其間有轉換/映射步驟。我使用Hibernate來表示並堅持我們自己的模式中的實體。我遇到的一個問題是我的桌子上有一個唯一的多列鍵。我希望看到的行爲類似於upsert:當Hibernate持久存在一個實體並檢測到一個唯一的約束衝突時,它會進行更新。我們正在使用MySQL,它提供了一個INSERT ... ON DUPLICATE KEY UPDATE語法,但我不確定Hibernate如何以及如何使用它。如何使用Hibernate模仿upsert行爲?
我想我總是可以嘗試插入,如果我發現一個異常做了更新,但是這看起來很拙劣和不理想。任何提示乾淨的方式來做到這一點?
如果選擇匹配任何行,沒有行會被「更新」鎖定是可以避免的。競賽條件是不可避免的。 – 2016-12-17 13:53:40