【发布时间】:2011-05-27 12:25:03
【问题描述】:
我找不到任何关于如何在 grails 中通过 executeUpdate() 命令使用悲观锁定的信息。这可能吗?
[更新] 根据 Burt 的建议,这是我得到的查询结果。请注意,我使用了已弃用的 UPGRADE 而不是 PESSIMISTIC_WRITE,因为此选项不存在。
def session = sessionFactory.currentSession
def query = session.createQuery("UPDATE SensorProcessed s SET s.batch=:batch WHERE s.device.id=:deviceId AND s.batch.id=:batchId AND s.sensor.id=:sensorId AND s.rollupKey=:rollupKey")
query.setLockMode ("s", LockMode.UPGRADE)
query.setParameter("batch",ignored)
query.setParameter("deviceId",device.id)
query.setParameter("batchId",batch.id)
query.setParameter("sensorId",sensor.id)
query.setParameter("rollupKey",rollupKey)
def updatedRows = query.executeUpdate()
谢谢,
亚伯拉罕。
【问题讨论】:
-
你能描述一下你想要做什么吗?
-
我在尝试更新时遇到过时对象异常,但很少见。我发现这通常发生在不同的服务更新同一个表时。我希望第二个服务用悲观锁更新它
标签: database grails pessimistic-locking