hibernate GenerationType.AUTO 在 Oracle 中如何工作?

use*_*603 5 java oracle hibernate jpa auto-generate

使用 oracle/JPA Hibernate。我以下面的方式导入了在学生表下具有值的模式。这是例子

100
85
80
70
1
Run Code Online (Sandbox Code Playgroud)

我有以下代码:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
long id;
Run Code Online (Sandbox Code Playgroud)

现在,当插入新学生时,它不会插入最大值,即 101 (max + 1)。但是在两者之间插入一些可用的值,例如 90。我不确定它怎么可能?

Hibernate 是否在内部创建一些数据库序列并使用然后使用最后创建的值加 1

Kay*_*man 4

对于 Oracle,是的,它会创建一个序列(可能名为hibernate_sequence)。

如果表中有现有值,您可能需要更新序列以使 id 大于现有值(否则很快就会出现主键错误)。