得到错误 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 语句:的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会得到这个错误的输出?

WTForms 得到错误

为啥我没有得到数组超出范围错误? [复制]

Python,phoenixdb - 没有得到一行(但也没有得到任何错误)

没有得到任何输出或错误ghostscript python

Cordova 文件插件 FileReader.readAsText 得到错误但不调用错误回调