Hibernate 和 Oracle 序列

Vla*_*lad 1 java oracle hibernate

我对 Oracle 序列和 Hibernate 有疑问。我使用这段代码通过 hibernate 获取 Oracle 序列

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "student_id_seq")
@SequenceGenerator(name = "student_id_seq", sequenceName = "Student_seq")
@Column(name = "StudentID")
public Long getStudentId() {
    return this.studentId;
}

public void setStudentId(Long studentId) {
    this.studentId = studentId;
}
Run Code Online (Sandbox Code Playgroud)

但是当我向表中插入新值时,生成的值不正确。例如:当我在数据库中有两条记录,id分别为2和3,当我插入新记录时,它的id不是4而是25。我不知道如何处理它。

Ily*_*lya 5

你应该设置allocationSize1

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "student_id_seq")
@SequenceGenerator(name = "student_id_seq", 
                   sequenceName = "Student_seq",
                   allocationSize = 1)  
Run Code Online (Sandbox Code Playgroud)

您可以在文档SequenceGenerator doc中阅读更多内容