【问题标题】:Syntax error in SQL statement when using Hibernate Envers使用 Hibernate Envers 时 SQL 语句中的语法错误
【发布时间】:2019-02-13 04:59:51
【问题描述】:

我刚刚将休眠环境添加到我的 Spring Boot 项目中。

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-envers</artifactId>
  <version>${hibernate.version}</version>
</dependency>

这是我的实体:

@Audited
@Entity
public class MyTable {
...
}

flyway迁移脚本创建对应的表:

CREATE TABLE MY_TABLE_AUD (
    ID BIGINT       NOT NULL,
    REV             INTEGER NOT NULL,
    REVTYPE         TINYINT,
   PRIMARY KEY ( id, REV )
);

create table REVINFO (
    REV  INTEGER GENERATED BY DEFAULT AS IDENTITY,
    REVTSTMP BIGINT,
    PRIMARY KEY ( REV )
);

alter table MY_TABLE_AUD
   add constraint FK5ecvi1a0ykunrriib7j28vpdj
   foreign key (REV)
   references REVINFO;

当我尝试将实体保存到 MY_TABLE 时,我收到以下错误:

Syntax error in SQL statement "SELECT HIBERNATE_SEQUENCE.NEXTVAL FROM[*] DUAL "; expected "identifier"; SQL statement:
select hibernate_sequence.nextval from dual [42001-197]

该错误似乎与应该生成REV 值的序列有关。

【问题讨论】:

  • 这里使用的是什么数据库和方言?

标签: sql hibernate spring-boot hibernate-envers


【解决方案1】:

错误提示你的sql语句无效。

https://www.h2database.com/javadoc/org/h2/api/ErrorCode.html#c42001

我的想法是您的表名不是“MyTable”,而是其他表名。检查您的表名是否是受 h2 保护的关键字,因此不是有效的表名。您可能需要更改模型类名称。

【讨论】:

    猜你喜欢
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    相关资源
    最近更新 更多