休眠oracle序列产生较大的缺口

我正在使用hibernate 3,oracle 10g。我有一张桌子:主题。定义在这里


CREATE TABLE SUBJECT

    ( 

     SUBJECT_ID NUMBER (10), 

     FNAME VARCHAR2(30)  not null, 

     LNAME VARCHAR2(30)  not null, 

     EMAILADR VARCHAR2 (40),

     BIRTHDT  DATE       not null,

     constraint pk_sub primary key(subject_id) USING INDEX TABLESPACE data_index

    ) 

;

插入新主题时,sub_seq用于创建主题ID,定义在此处


create sequence sub_seq

       MINVALUE 1 

       MAXVALUE 999999999999999999999999999 

       START WITH 1

       INCREMENT BY 1 

       CACHE 100 

       NOCYCLE ;

Subject类是这样的:


@Entity

@Table(name="ktbs.syn_subject")

public class Subject {


    @Id 

    @Column(name="subject_id")

    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SUB_SEQ")

    @SequenceGenerator(name="SUB_SEQ", sequenceName = "SUB_SEQ")

    private long subjectId;

    private String fname;

    private String lname;

    private String emailadr;

    private Date birthdt;

}

在主题表中,数据库中有4555个主题由excel的plsql脚本加载,并且sub_sequence运行良好。主题ID的范围是1--4555。

但是,当我使用休眠模式从应用程序中添加主题时,序列号跳至255050。运行几天后,休眠模式生成的主题ID如下所示:


270079

270078

270077

270076

270075

270074

270073

270072

270071

270070

270069

270068

270067

270066

270065

270064

270063

270062

270061

270060

270059

270058

270057

270056

270055

270054

270053

270052

270051

270050

265057

265056

265055

265054

265053

265052

265051

265050

260059

260058

260057

260056

260055

260054

260053

260052

260051

260050

255067

255066

255065

255064

255063

255062

255061

255060

255059

255058

255057

255056

255055

255054

255053

255052

255051

255050

4555

4554

4553

.

.

.

.

1

差距很大:4555至255051、255067至260051、265057至270051


这是浪费,不是期望的行为。


有谁知道为什么会这样,并且很热要解决它


谢谢


眼眸繁星
浏览 660回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Oracle