【问题标题】:getting error org.h2.jdbc.JdbcSQLSyntaxErrorException: Sequence "HIBERNATE_SEQUENCE" not found; SQL statement:得到错误 org.h2.jdbc.JdbcSQLSyntaxErrorException:找不到序列“HIBERNATE_SEQUENCE”; SQL 语句:
【发布时间】: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:

【问题讨论】:

    标签: spring spring-boot h2


    【解决方案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 是可选的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-23
        • 2017-02-09
        • 2022-11-16
        • 2017-12-10
        • 2022-12-09
        • 2013-07-26
        • 2016-12-06
        • 2019-09-28
        相关资源
        最近更新 更多