java - Hibernate 和 Oracle 序列

标签 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;
}

但是当我向表中插入一个新值时,生成的值不正确。例如: 当我在数据库中有两条 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/

相关文章:

oracle - 在删除语句中使用 rowid

java - org.springframework.orm.jpa.EntityManagerHolder 无法转换为 org.springframework.orm.hibernate5.SessionHolder

java - 无法为类实现测试程序

java - 我的 Android 类中的 Arraylist 错误

sql - 在带有行值的 sql select 语句中附加行号

sql - 在 oracle SQL 中打印连续或重叠日期范围的开始和结束日期

java - 是否有将 PostgreSQL hstore 转换为 JPA 2.1 DataType 的优雅且通用的方法?

java - 运行它但在 s :iterator tag 中没有显示

java - 如何从字符串中获取整数?

java - 为什么java中线程通信不起作用?