2014-10-30 3 views
0
create sequence SUBMISSION_SEQ 
    start with 1 
    INCREMENT BY 1; 



@Entity 
@Table(name = "SUBMISSION") 
public class Submission { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "submission_seq_gen") 
    @SequenceGenerator(name = "submission_seq_gen", sequenceName = "SUBMISSION_SEQ", initialValue = 1, allocationSize = 1) 
    @Column(name = "SUBMISSION_ID") 
    private Long id; 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 
} 

Номер последовательности прыгает иногда прямо на 10-12, иногда он правильно увеличивается на 1, что я намерен.eclipse link jpa sequence jump

ответ

0

Последовательности не должны быть плотно последовательными. Это просто факт. Лучшим решением для вашей проблемы является: забыть об этом. Идентификаторы сгенерированных последовательностей представляют собой не что иное, как средние указатели, идентификаторы объектов, которые будут использоваться для ссылки на строку таблицы.

Если вам нужна плотная последовательная нумерация (по какой бы то ни было причине она может быть), вам придется реализовать ее самостоятельно как отдельный столбец в вашей таблице.

В любом случае, это может быть случай, когда вы имеете дело с кэшированием по умолчанию последовательности. Если вы хотите, попробуйте установить вашу последовательность следующим образом:

create sequence SUBMISSION_SEQ 
    start with 1 
    INCREMENT BY 1 
    nocache; 

но следует помнить, что для больших объемов данных это будет производительности Вреда вставок данных.

Смежные вопросы