【问题标题】:pessimistic locking: Lock database entity grails悲观锁定:锁定数据库实体 grails
【发布时间】:2013-12-07 11:41:50
【问题描述】:

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

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

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

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

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

阅读时如何锁定多行?

请查看相关问题了解更多信息:concurrent transaction in grails resulting in database stale state exception

【问题讨论】:

    标签: hibernate grails grails-orm pessimistic-locking


    【解决方案1】:

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

    Process.withNewTransaction {
        def process = Process.get(job.process.id)
        process.lock()
        process.sessionId = 0
        process.processId = 0
        process.save(flush:true)    
    }
    

    【讨论】:

    • 这对你有用,因为你只能通过Process.get(job.process.id)获得一行。请参阅链接问题,详细说明为什么我不能使用像你这样的解决方案。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2012-02-29
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多