【发布时间】:2016-02-16 22:45:44
【问题描述】:
Jboss 7.2.0、ejb3、oracle 项目中的所有实体都定义了序列生成器,例如 @SequenceGenerator(name="xx", sequenceName="yy" allocationSize="10")
对于一对多关系,有时我会遇到重复主键的问题。不知道这里出了什么问题,但是在事务回滚后,序列被重置,并且我一直都有违反约束的错误 我已将 allocationSize 更改为 1,似乎没问题,但原因是什么?
【问题讨论】:
-
在 Oracle 数据库中,SEQUENCE 永远不会被回滚重置。一旦从 SEQUENCE 中取出数字,它们就会被取出,如果事务回滚,这些数字就会丢失。另一方面,从 SEQUENCE 派生的数字不应该附加任何意义——它们只是数字。如果 JBoss 正在做某事来“重置”一个序列,那绝对是在做错事。祝你好运。
-
我想我找到了原因,因为这次产生了负数。根据stackoverflow,在我的情况下,创建oracle序列参数增量必须设置为值10