You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中表名与SQL关键字冲突的解决及配置咨询

解决SQL关键字表名冲突的几种方案

方案1:给表名添加转义符

直接在@Table注解的name属性里给关键字表名加上数据库对应的转义符号,JPA会自动识别并生成正确的SQL:

@Table(name = "`order`") // MySQL/MariaDB用反引号,PostgreSQL可改用双引号
public class Order {
    // ... 实体字段
}

不同数据库的转义符略有差异:

  • MySQL/MariaDB:使用反引号 `
  • PostgreSQL/Oracle:使用双引号 "

方案2:修改表名(最简单直接)

既然order是SQL保留关键字,直接换个非关键字的表名,比如orders,彻底规避冲突:

@Table(name = "orders")
public class Order {
    // ... 实体字段
}

这种方式不需要额外配置,也不会带来数据库兼容性问题,是最省心的解决思路。

方案3:全局配置自动转义标识符

如果项目里存在多个关键字表名/列名,可以在application.properties中添加Hibernate全局配置,自动给所有标识符(表名、列名)加上引号:

# 开启全局标识符引用,自动给表名/列名添加转义符
spring.jpa.properties.hibernate.globally_quoted_identifiers=true

开启后,Hibernate生成SQL时会自动给所有表名和列名加上对应数据库的转义符号,无需逐个修改实体类注解。

内容的提问来源于stack exchange,提问作者robocon321

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:20:15