Hilsnate在Grails应用程序中的版本值

时间:2010-04-25 14:48:17

标签: hibernate grails version

我正在查看数据库转储文件,我在各种表中看到许多记录,其版本号设置为0以外的值(在一种情况下甚至为94)。我知道它与hibernate锁定策略有关,但我担心的是今天是星期天,而且该网站几乎没有访问者,所以:这是正常的吗?或者是否存在一个已知的hibernate错误甚至是一些编程问题导致这种错误?

顺便说一句,在恢复数据库备份时,是否安全/建议手动将这些值重置为零?

2 个答案:

答案 0 :(得分:2)

Hibernate版本字段实际上只是该记录保存次数的计数(好吧,减去1,因为它第一次保存该值为0)。请注意,此数字实际上不是已使用作为保存计数,因此任何时候的实际值都不重要。

它的使用方式是确定在您读取行和尝试保存行时是否已保存行。如果您读取行并且版本值为12,则稍后您更改了对象并尝试保存它。 Hibernate做的第一件事是检查该行中DB版本中的值是否仍为12.如果不是,那么其他一些进程已经保存了该行,因为您已经读过它,如果您现在保存,则可能会覆盖一些在上一次保存期间所做的更改。

回答你的问题......只要没有任何东西在潜在的读/存储过程的“中间”(如网站停止或某些此类),那么您可以将版本字段更改为您的任何数字喜欢。每次存储该行时,它都会从那里增加。

答案 1 :(得分:1)

此外,如果您不需要它,可以使用

将其关闭

静态映射{      版本错误     }