GPars锁定返回null

时间:2012-12-24 18:08:28

标签: concurrency groovy locking gpars

当我尝试在表中锁定一行时,有时会返回null。那是什么意思?我在锁之前验证域实例是否为空:

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

输出:

State 1
null

(“状态1”是状态的字符串表示)

1 个答案:

答案 0 :(得分:0)

通过执行此操作,您将从GORM乐观锁定(在更新之前比较对象的版本)切换到悲观锁定,这意味着在锁定释放之前,读取操作将会阻塞。如果要检索值,请使用下面的闭包(请参阅方法returnValue):

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

顺便说一下,事务是必需的,因此在您的问题中返回的null可能意味着您的对象不在事务中。