我正在编写一个应用程序,将来自第三方数据源的实体同步到我们自己的模式中,其间有转换/映射步骤。我使用Hibernate来表示并坚持我们自己的模式中的实体。我遇到的一个问题是我的桌子上有一个唯一的多列键。我希望看到的行为类似于upsert:当Hibernate持久存在一个实体并检测到一个唯一的约束冲突时,它会进行更新。我们正在使用MySQL,它提供了一个INSERT ... ON DUPLICATE KEY UPDATE语法,但我不确定Hibernate如何以及如何使用它。如何使用Hibernate模仿upsert行为?
我想我总是可以尝试插入,如果我发现一个异常做了更新,但是这看起来很拙劣和不理想。任何提示干净的方式来做到这一点?
如果选择匹配任何行,没有行会被“更新”锁定是可以避免的。竞赛条件是不可避免的。 – 2016-12-17 13:53:40