JPA @Version溢出

时间:2014-05-14 15:41:55

标签: java jpa jpa-2.0

JPA规范(2.1)说:

  

版本属性支持以下类型:int,Integer,short,Short,long,Long,Timestamp

@Version属性溢出后的预期行为是什么?

2 个答案:

答案 0 :(得分:4)

我希望它能正常工作。溢出和版本++!=版本没有错误。如果您使用short并且在第一个实体完成之前在此实体上有65536个事务更新,则会导致覆盖更新的风险。

编辑:当您使用@Version时,更新查询将不会显示如下:

update person set surname = ? where id = ?

但是像这样:

update person set surname = ?, version_field = ? where id = ? and version_field = ?

现在JDBC将在完成时返回更新计数。如果没有进行更新,那么JPA实现将假定没有找到具有指定id和版本的数据 - >例外。

答案 1 :(得分:0)

我可以在Hibernate 5上确认EasterBunnyBugSmasher的答案。定义一个字节@Version字段,一旦达到128就转到-127并保持循环。

(我没有评论的声誉)