在 Spring 项目中使用生成的 SQL 查询创建 H2 数据库时出现异常

Posted

技术标签:

【中文标题】在 Spring 项目中使用生成的 SQL 查询创建 H2 数据库时出现异常【英文标题】:Exception when creating H2 database with generated SQL query in Spring project 【发布时间】:2021-11-22 03:50:39 【问题描述】:

我在我的项目中使用 spring 和 H2 数据库并创建简单的实体, 但是当我尝试启动我的应用程序时,我得到了这个: Syntax error in SQL statement "CREATE TABLE T_TRANSACTION (ID BIGINT GENERATED BY DEFAULT AS IDENTITY, AMOUNT INTEGER NOT NULL, FROM[*] VARCHAR(255), TO VARCHAR(255), PRIMARY KEY (ID))"; expected "identifier"; SQL statement: create table t_transaction (id bigint generated by default as identity, amount integer not null, from varchar(255), to varchar(255), primary key (id))

我的实体:

@Entity
@Table(name = "t_transaction")
class Transaction

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private val id: Long? = null

    var from: String? = null

    var to: String? = null

    var amount = 0

应用程序属性:

spring.datasource.driverClassName=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:Db;DB_CLOSE_DELAY=-1

我也在其他实体中使用相同的 id 生成方法,但我没有得到相同的错误。

【问题讨论】:

【参考方案1】:

from 是保留的 SQL 关键字。尝试将其更改为其他内容。

如果您看到生成的查询,它会将 FROM 视为与 FROM[*] VARCHAR(255) 不同的提示。

【讨论】:

以上是关于在 Spring 项目中使用生成的 SQL 查询创建 H2 数据库时出现异常的主要内容,如果未能解决你的问题,请参考以下文章

JOOQ:使用 WITH 子句创建子查询(使用纯 SQL)

监听器如何获取Spring配置文件(加载生成Spring容器)

如何在 Spring Boot 项目中使用 Log4jdbc 记录 SQL 查询、它们的参数和结果?

Spring Boot - JPA 或 SQL 查询在连接表中查找最常见的项目?

如何在spring项目中打出帆软报表的查询sql?

spring MVC +freemarker + easyui 实现sql查询和执行小工具总结