我只是在寻找一些关于hibernate如何使用ver列处理冲突的文档。
到目前为止的理解: 更改为行意味着已更改的行插入新版本号- 这是通过“select max(ver)+1”完成的吗? -
随后删除之前的版本。
顺便问一下:我们怎么知道{“select max(ver)+1”; insert}将保证是原子操作吗?他们先锁定行吗?提前感谢任何信息。我只是想弄清楚。
答案 0 :(得分:2)
我会在这里扩展一点。 hibernate为更新执行的操作类似于
UPDATE table SET string = 'string', number = 1, version = version+1
WHERE id = %Id% AND version = %Version%
这意味着只有当版本仍然与从数据库加载对象/行并在同一查询中更新版本号时,更新才会成功。
答案 1 :(得分:1)