3

我遵循 grails 文档,它说要进行悲观锁定,我可以这样做:

def plan = Plan.findWhere(user:user, [lock: true])

所以这会锁定计划实例,直到完成保存为止。现在,在我的情况下,我想一次锁定多个计划,如下所示:

def plan = Plan.findAllWhere(user:user, [lock: true])

我在默认情况下是事务性的 grails 服务中执行此操作,但上面的行没有按预期工作stale state exception。如果执行并发事务,它不会锁定所有行并抛出。

阅读时如何锁定多行?

有关更多信息,请参阅相关问题:grails 中的并发事务导致数据库陈旧状态异常

4

1 回答 1

-1

你可以做这样的事情,这对我有用:

Process.withNewTransaction {
    def process = Process.get(job.process.id)
    process.lock()
    process.sessionId = 0
    process.processId = 0
    process.save(flush:true)    
}
于 2013-11-22T14:50:33.153 回答