1

我有多台机器运行一项服务,该服务使用 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 时更新?

4

1 回答 1

1

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

于 2012-06-01T09:14:10.377 回答