【发布时间】: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
当我尝试锁定表中的一行时,有时会返回 null。这意味着什么?我在锁之前验证域实例不为空:
println state
state = State.lock(state.id)
println state
这个输出:
State 1
null
("State 1"是状态的String表示)
【问题讨论】:
标签: concurrency groovy locking gpars
通过这样做,您将从 GORM 乐观锁定(比较更新之前的对象版本)切换为悲观锁,这意味着读取操作将被阻塞,直到锁被释放。如果您想检索一个值,请使用下面的闭包(参见方法 returnValue):
State.withPessimisticLock(state.id) { Object lockedDomain ->
return "OK"
}.onNotFound { ->
return "NG"
}
assert result.returnValue == "OK"
顺便说一句,事务是必需的,所以你的问题中返回的null 可能意味着你的对象不在事务中。
【讨论】: