【发布时间】:2016-02-11 17:41:18
【问题描述】:
实体类的Hibernate注解如下:
@Entity
@Table(name = "MY_ENTRY")
@SequenceGenerator(name="SEQ_MY_ENTRY_ID", allocationSize=1, sequenceName="SEQ_MY_ENTRY_ID")
public class MyEntry {
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_MY_ENTRY_ID")
private Long id;
...
Oracle DB 的 SQL 如下所示:
CREATE SEQUENCE "SEQ_MY_ENTRY_ID" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 1541 CACHE 20 NOORDER NOCYCLE;
效果很好!
我只是想知道为什么生成的 ID 似乎顺序混乱。我期待像1148, 1149, 1150, ... 这样的东西。但相反,我得到例如这个:1148, 1165, 1166, 1181, 1167, 1149, 1150, 1182, 1151, 1168, 1152, 1153, 1183, 1154, ...。再次,它工作正常。它永远不会导致冲突。但是为什么会有这个奇怪的顺序呢?
【问题讨论】:
-
你在做 RAC 吗?
-
@mustaccio 我认为这无关。我的序列中没有任何间隙。
-
@MarmiteBomber 实际上我不知道我们的 Oracle DB 运行在什么之上。
-
您 " 期望类似 1148, 1149, 1150" 但您却得到 "this 1148, 1165, 1166, 1181" -- 如果你的问题不是关于差距,那么它是关于什么的?