Hibernate 在使用 strategy = GenerationType.IDENTITY 时为 ID 插入 null

Hibernate inserts null for ID when using strategy = GenerationType.IDENTITY

为什么 Hibernate 在 table 中为 ID 插入空值。

@Id
@Getter
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

这是我在 table blabla 中插入内容时收到的消息 ↓↓↓

Hibernate: insert into blabla (id, bla1, bla2) values (null, ?, ?)

然而,当使用 strategy = GenerationType.IDENTITYstrategy = GenerationType.AUTO/SEQUANSE 时,我收到了这条消息 ↓↓↓

Hibernate: call next value for hibernate_sequence

Hibernate: insert into blabla (bla1, bla2, id) values (?, ?, ?)

有谁知道为什么会这样,因为 ID 中的这个 null 在连接到数据库时导致异常。

更新:

我 运行 我的应用程序 strategy = SEQUENCE and AUTO 但我也遇到异常

数据库是H2

解法:

您转到 application.properties 文件并添加这行代码:

hibernate.hbm2ddl.auto=validate

可能你的table没有定义为自动增量PK

尝试将此添加到 application.properties:

hibernate.hbm2ddl.auto=validate

这两个命令都已在 Hibernate ORM 5.6 中修复。5.Final,旧版本产生无效 SQL 由于某些历史原因,它被旧版本的 H2 接受,但新版本抛出一个预期异常。

此版本还包含最新版本的 H2 所需的各种其他更改。

您需要将 hibernate-core 升级到此版本或更高版本。