我的应用程序调用了跨2个JVM集群的服务器。 这些请求可以发送到任一服务器。 我使用Spring与Hibernate进行数据库调用(对于DB2数据库)。 但是,我注意到Hibernate之间没有自动锁定机制。我确实通过类似于 - query.setLockMode(“myBo”,LockMode.UPGRADE)来实现锁定机制;但是这似乎并不适用于JVM。在JVM上使用hibernate的问题
问题场景:
首先JVM从表1(代替用LockMode.UPGRADE)选择用于更新的数据。在第一个JVM完成更新之前,第二个JVM也会从Table1中选择数据(这不应该发生)。第一个JVM成功完成更新。但是第二个JVM出现DuplicateKeyException失败(更新发生在Table1的索引键上)。
有人可以请建议一个解决方案吗?
感谢 拉迪卡
用'LockMode.UPGRADE'做第二个事务选择数据吗?第二笔交易是否选择与第一笔交易相同的数据? – axtavt 2011-04-19 14:10:16