得到错误 org.h2.jdbc.JdbcSQLSyntaxErrorException:找不到序列“HIBERNATE_SEQUENCE”; SQL 语句:
Posted
技术标签:
【中文标题】得到错误 org.h2.jdbc.JdbcSQLSyntaxErrorException:找不到序列“HIBERNATE_SEQUENCE”; SQL 语句:【英文标题】:getting error org.h2.jdbc.JdbcSQLSyntaxErrorException: Sequence "HIBERNATE_SEQUENCE" not found; SQL statement: 【发布时间】:2021-08-04 21:23:36 【问题描述】:当我的 Spring Boot 应用程序启动时,我正在将一些数据从 data.sql 文件填充到内存数据库中的 H2 中。它为 id 为 1、2、3 等的用户实体提供了一些值。
如果我想发布新的用户对象,我必须将请求正文作为
"id":1,
"firstname": "fgjjd",
"lastname": "gorfgjfgje",
"age": 4,
"gender": "M"
理想情况下我不应该传递“id”字段,因为我有:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
为什么它只能这样工作?如果我传递一些其他 id 然后我得到
getting error org.h2.jdbc.JdbcSQLSyntaxErrorException: Sequence "HIBERNATE_SEQUENCE" not found; SQL statement:
【问题讨论】:
【参考方案1】:当您从 sql 文件插入数据时,应用程序只使用现有的 id。但是,当您使用特定于应用程序的代码插入它时,hibernate 会尝试使用给定的序列请求新的 id。不幸的是,数据库中似乎不存在您的序列。也许这会有所帮助:Hibernate sequence not generated
【讨论】:
【参考方案2】:在创建表时使用它,自动增量 - 序列将在内部创建,JPA 将使用您的代码处理它
person_id int primary key generated always as identity (start with XX)
Start with
是可选的
【讨论】:
以上是关于得到错误 org.h2.jdbc.JdbcSQLSyntaxErrorException:找不到序列“HIBERNATE_SEQUENCE”; SQL 语句:的主要内容,如果未能解决你的问题,请参考以下文章