JPA @Version溢出

Jav*_*ier 6 java jpa jpa-2.0

JPA规范(2.1)说:

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

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

Eas*_*her 4

我希望它能正常工作。溢出和 version++ != version 不会出现错误。如果您使用的是短交易并且在第一个交易完成之前有 65536 个交易对此实体进行了更新,则将导致覆盖更新的风险。

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

update person set surname = ? where id = ?
Run Code Online (Sandbox Code Playgroud)

但像这样:

update person set surname = ?, version_field = ? where id = ? and version_field = ?
Run Code Online (Sandbox Code Playgroud)

现在 JDBC 将在完成后返回更新计数。如果未进行更新,则 JPA 实现将假定未找到具有指定 id 和版本的数据 -> 异常。