确保更新发生在 Hibernate/HSQLDB 中的并发锁定?
Posted
技术标签:
【中文标题】确保更新发生在 Hibernate/HSQLDB 中的并发锁定?【英文标题】:Ensure update happens with concurrent locking in Hibernate/HSQLDB? 【发布时间】:2012-06-01 04:05:08 【问题描述】:我有多台机器运行一项服务,该服务正在使用 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】:您使用的是旧版本的 HSQLDB,它不支持事务隔离。使用最新版本(2.2.8 或更高版本)即可。
【讨论】:
以上是关于确保更新发生在 Hibernate/HSQLDB 中的并发锁定?的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate/hsqldb 2 无法水合 Blob 列
使用本机 SQL 创建表适用于 Hibernate/HSQLDB,插入失败。为啥?