【问题标题】:GPars lock returning nullGPars 锁返回 null
【发布时间】:2012-12-24 18:08:27
【问题描述】:

当我尝试锁定表中的一行时,有时会返回 null。这意味着什么?我在锁之前验证域实例不为空:

println state
state = State.lock(state.id)
println state

这个输出:

State 1
null

("State 1"是状态的String表示)

【问题讨论】:

    标签: concurrency groovy locking gpars


    【解决方案1】:

    通过这样做,您将从 GORM 乐观锁定(比较更新之前的对象版本)切换为悲观锁,这意味着读取操作将被阻塞,直到锁被释放。如果您想检索一个值,请使用下面的闭包(参见方法 returnValue):

    State.withPessimisticLock(state.id) { Object lockedDomain ->
    return "OK"
    }.onNotFound { ->
        return "NG"
    }
    assert result.returnValue == "OK"
    

    顺便说一句,事务是必需的,所以你的问题中返回的null 可能意味着你的对象不在事务中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 2019-08-21
      • 2020-06-19
      相关资源
      最近更新 更多