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

SpringBoot中JPA实体定义引发SQL语法错误排查求助

问题原因与解决办法

问题根源

你遇到的SQL语法错误,核心原因是user是PostgreSQL(从错误日志格式可判断)的保留关键字。虽然你在@Table注解里指定了表名为"User",但Hibernate生成DDL时会把未转义的标识符自动转为小写,最终执行的SQL是create table user (...),这就和数据库的关键字冲突,触发语法错误。

两种解决办法

  • 办法一:更换非关键字表名
    修改实体类的@Table注解,改用不会和关键字冲突的表名,比如app_user:

    @Entity
    @Table(name="app_user")
    public class User {
        // ... 其余代码保持不变
    }
    
  • 办法二:给表名添加转义符强制保留大小写
    如果一定要用User作为表名,可以在表名前后加上双引号(适配PostgreSQL的转义规则),让Hibernate生成带引号的表名:

    @Entity
    @Table(name="\"User\"")
    public class User {
        // ... 其余代码保持不变
    }
    

    这样生成的DDL会是create table "User" (...),数据库会把带引号的标识符当作普通表名处理,不会识别为关键字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 05:42:44