Grails版本列

ska*_*kaz 1 grails

我有一个Grails应用程序,我正在从1.0.3迁移到1.3.7

据我所知,使用版本号的表将从零开始,并在行更新时自动递增.我所有的遗留数据都显示每行的版本单元格为空,但输入的新行的版本号为0.

Grails的1.0.3版本不支持这个概念吗?我应该将所有适当的表的所有这些行更新为用户0而不是null吗?有什么影响?谢谢.

Bur*_*ith 6

Grails始终支持版本列来实现Hibernate的乐观锁定.当您更新实例时,Hibernate会生成比较当前版本和先前版本的SQL,如果它们不同则会抛出异常.由于SQL null永远不会等于任何内容,因此任何更新这些行的尝试都将触发异常.

修复很简单 - 只需运行一个查询将空值设置为0,就像这样update table_name set version=0 where version is null.

完成此操作后,您应该将这些列更改为非null,以避免将来出现空值.