JPA规范(2.1)说:
版本属性支持以下类型:int,Integer,short,Short,long,Long,Timestamp
@Version
属性溢出后的预期行为是什么?
答案 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并保持循环。
(我没有评论的声誉)