Hibernate 休眠:条件的锁定模式不工作
我需要为hibernate指定锁定模式。 我在做什么:Hibernate 休眠:条件的锁定模式不工作,hibernate,optimistic-locking,pessimistic-locking,Hibernate,Optimistic Locking,Pessimistic Locking,我需要为hibernate指定锁定模式。 我在做什么: session().createCriteria(clazz, "c") .add(Restrictions.eq("c.a", false)) .add(Subqueries.propertyEq("c.b", subquery)) .setLockMode("pos", LockMode.PESSIMISTIC_READ); 但是当我看到提供的查询时,hibernate仍然没有提供SELECT FOR UPDATE 如何强
session().createCriteria(clazz, "c")
.add(Restrictions.eq("c.a", false))
.add(Subqueries.propertyEq("c.b", subquery))
.setLockMode("pos", LockMode.PESSIMISTIC_READ);
但是当我看到提供的查询时,hibernate仍然没有提供SELECT FOR UPDATE
如何强制hibernate生成SELECT FOR UPDATE
子句?
我认为唯一可行的情况是:
session().get(clazz, id, LockOptions.UPGRADE);
但是我需要使用更复杂的查询。我已经找到了它不起作用的原因。它实际上是hibernate 3.5-3.6中的bug 它只在4.0.1中被修复 因此,我以以下解决方法结束:
MyObject myObject = criteria.uniqueResult();
MyObject lockedOne = (MyObject) session()
.get(MyObject.class, myObject.getId(), LockMode.UPGRADE_NOWAT);