Tom*_*mer 4 java oracle hibernate jpa jboss7.x
我一直在使用jboss 4.2.3的hibernate,一切正常,现在我将代码迁移到Jboss 7.1.1,突然我开始得到:
Caused by: org.hibernate.exception.ConstraintViolationException: ORA-00001: unique constraint (OBLICORE.PK_ACE_WORKERS_QUEUE_STATS_ID) violated
Run Code Online (Sandbox Code Playgroud)
生成的ID也是负数.
失败的实体定义如下:
@Id
@SequenceGenerator(name = "SEQ_ACE_WORKERS_QUEUE_STATS_ID", sequenceName = "SEQ_ACE_WORKERS_QUEUE_STATS_ID", allocationSize = 500)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_ACE_WORKERS_QUEUE_STATS_ID")
@Column(name = "ID")
private long Id;
Run Code Online (Sandbox Code Playgroud)
我检查了Oracle中的序列,看起来没问题(就像我说的那样,它之前使用的是jboss 4.2,并且自迁移以来在数据库方面没有任何变化).
我尝试编写Hibernate查询日志,但找不到该查询,我还记录了持久化该类的特定调用,并发现它只被调用一次.
检查这个问题:hibernate oracle序列产生很大的差距
它必须是Hibernate的序列生成器,它默认为Hi/Lo算法,返回值溢出.您可以尝试使用特定于hibernate的注释来默认为较旧的行为GenericGenerator(name="blah", strategy="sequence")或设置allocationSize=1.
如果您依赖的序列递增大于1的某个值,则必须使用不同的生成器.或者,也许这足以设置hibernate.id.new_generator_mappings到false,但毕竟是一个新的问题的范围.
| 归档时间: |
|
| 查看次数: |
6726 次 |
| 最近记录: |