Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA@版本溢出_Java_Jpa_Jpa 2.0 - Fatal编程技术网

Java JPA@版本溢出

Java JPA@版本溢出,java,jpa,jpa-2.0,Java,Jpa,Jpa 2.0,JPA规范(2.1)规定: 版本属性支持以下类型:int、Integer、short、short、long、long、Timestamp @Version属性溢出后的预期行为是什么?我希望它能正常工作。溢出和版本++!=版本如果您正在使用short,并且在第一个实体完成之前在此实体上有65536个更新事务,则会导致覆盖更新的风险 编辑:当您使用@Version时,更新查询将不会如下所示: update person set surname = ? where id = ? update per

JPA规范(2.1)规定:

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


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

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

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

update person set surname = ? where id = ?
update person set surname = ?, version_field = ? where id = ? and version_field = ?
但就像这样:

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

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

我可以确认EasterBunybugsMasher在Hibernate 5上的回答。定义了一个byte@Version字段,一旦达到128,就转到-127并继续循环


(我没有评论的名声)

我想这是一个学术问题,因为即使你每天有10亿次更新,也需要大约2500万年的时间来获得Long…的溢出。请注意,version属性可能是
short
,在这种情况下只需要32k次更新。为什么不试试,看看什么数据存储类型是“short”将创建,然后插入一个最短的+1。。。数据存储是否抛出SQLException?我不建议您自己设置@Version属性。为一些意外行为做好准备。那个版本>++版本不重要吗?你不需要确认任何人的答案。如果你有足够的代表性,你可以投票支持它。但你发布的内容(这不是答案)只会被否决和删除,对任何人都没有帮助。另外,我也不知道你为什么选择在三年前提出并回答的问题上这样做。他的回答以“我希望它能…”开头,只有+3,所以我必须在使用之前进行验证。我想节省别人的时间。当然,如果不受欢迎,我不会再这样做了。加博——这不是不受欢迎的问题。这就是StackOverflow的指导方针的设置方式。请注意,答案已被接受,正在验证它。而且,无论是提问者还是回答者,投票都是受欢迎的。而且只需要几个代表点(15)就可以拥有这种能力。