我对 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;
}
但是当我向表中插入一个新值时,生成的值不正确。例如: 当我在数据库中有两条 ID 为 2 和 3 的记录时,当我插入新记录时,它的 ID 不是 4 而是 25。我不知道如何处理它。
最佳答案
您应该将 allocationSize
设置为 1
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "student_id_seq")
@SequenceGenerator(name = "student_id_seq",
sequenceName = "Student_seq",
allocationSize = 1)
您可以在文档中阅读更多信息 SequenceGenerator doc
关于java - Hibernate 和 Oracle 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19582219/