对于Hibernate创建的表,应该在创建行时将版本列设置为某个值吗?

时间:2013-05-29 21:22:43

标签: hibernate

我有一个在Hibernate(java)世界中创建的表,它也被非休眠系统(.NET使用,但可以是任何东西)。 Hibernate使用version列进行交易工作,并且当列为null时失败(将行检测为“瞬态”状态)。

问题...是否应忽略该列(来自非hibernate视角)?要么, 总是用zero(或其他值)初始化?要么... 只在创建表的SQL中设置为default 0? 实时共享Hibernate使用的这些表的最佳策略是什么?

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果您要在Hibernate和非Hibernate系统之间共享表,那么非Hibernate系统必须在每次修改行时增加版本号。这是因为Hibernate乐观锁假设如果版本号没有改变,那么该行没有改变。

这也意味着另一个系统在首次创建行时应插入一个值,如0或1。