当我尝试在表中锁定一行时,有时会返回null。那是什么意思?我在锁之前验证域实例是否为空:
println state
state = State.lock(state.id)
println state
输出:
State 1
null
(“状态1”是状态的字符串表示)
答案 0 :(得分:0)
通过执行此操作,您将从GORM乐观锁定(在更新之前比较对象的版本)切换到悲观锁定,这意味着在锁定释放之前,读取操作将会阻塞。如果要检索值,请使用下面的闭包(请参阅方法returnValue):
State.withPessimisticLock(state.id) { Object lockedDomain ->
return "OK"
}.onNotFound { ->
return "NG"
}
assert result.returnValue == "OK"
顺便说一下,事务是必需的,因此在您的问题中返回的null
可能意味着您的对象不在事务中。