确保在Hibernate / HSQLDB中使用并发锁定进行更新?

时间:2012-06-01 04:05:09

标签: hibernate concurrency locking hsqldb

我有多台机器正在运行使用Hibernate从数据库更新和读取值的服务。

每当我需要在服务中更新数据库值时,我都会使用升级nowait锁,如果我无法获得锁,我只是稍后重试。

void lock(Job job) {
    sessionFactory.session.lock(job, LockMode.UPGRADE_NOWAIT);
}

我的服务中有一个地方我必须在那里更新数据库值,我无法重试。我想我只是在那些地方使用普通的升级锁,而且它可以等待它需要更新的值。

void waitForLock(Job job) {
    sessionFactory.session.lock(job, LockMode.UPGRADE);
}

但现在我看到这个错误有时会弹出......

org.hibernate.dialect.HSQLDialect - HSQLDB supports only READ_UNCOMMITTED isolation

有没有办法保证第一次使用Hibernate更新此值?

1 个答案:

答案 0 :(得分:1)

您使用的旧版HSQLDB不支持事务隔离。使用最新版本(2.2.8或更高版本)。