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.IDENTITY
→ strategy = 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
升级到此版本或更高版本。
为什么 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.IDENTITY
→ strategy = 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
升级到此版本或更高版本。