title: hibernate oracle sequence produces large gap
body: <p>I am using hibernate 3 , oracle 10g. I have a table: subject. The definition is here</p>
  
  <pre><code>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
      ) 
  ;
  </code></pre>
  
  <p>when insert a new subject, sub_seq is used to create an subject id, the definition is here</p>
  
  <pre><code>create sequence sub_seq
         MINVALUE 1 
         MAXVALUE 999999999999999999999999999 
         START WITH 1
         INCREMENT BY 1 
         CACHE 100 
         NOCYCLE ;
  </code></pre>
  
  <p>the Subject class is like this:</p>
  
  <pre><code>@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;
  }
  </code></pre>
  
  <p>in the subject table , there have been 4555 subjects in the database loaded by plsql scripts from excel and the sub_sequence worked fine. subject ids range from 1--4555.</p>
  
  <p>however, when i added a subject from my application using hibernate, 
  the sequence number jumped to 255050. After several days running, the subject ids generated by hibernate look like this</p>
  
  <pre><code>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
  </code></pre>
  
  <p>There are several large gaps:  4555 to 255051, 255067 to 260051, 265057 to 270051</p>
  
  <p>this is a waste and not a desired behavior.</p>
  
  <p>does anyone know why this happens and hot to fix it</p>
  
  <p>Thanks</p>