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

Spring Boot中Entity无法创建PostgreSQL表的问题求助

问题解决:PostgreSQL创建user表时语法错误

问题原因

user是PostgreSQL的保留关键字,直接在CREATE TABLE语句中使用作为表名时,PostgreSQL会将其识别为关键字而非表名,从而触发语法错误。

解决方案

有两种可行的解决方式:

方式1:修改表名为非关键字

直接将实体类中的@Table注解的表名改成非关键字名称,比如users或app_user:

@Entity
@Table(name = "users") // 替换为非关键字名称
public class UserModel {
    // ... 其他代码保持不变
}

方式2:给表名添加双引号(强制PostgreSQL识别为标识符)

如果必须保留user作为表名,需要在JPA注解中给表名加上双引号,让Hibernate生成带双引号的SQL语句:

@Entity
@Table(name = "\"user\"") // Java字符串中需转义双引号
public class UserModel {
    // ... 其他代码保持不变
}

此时Hibernate生成的SQL会变为:

create table "user"(id bigserial not null, email varchar(255), name varchar(255), priority integer, primary key (id))

PostgreSQL会将带双引号的"user"识别为表名,而非关键字。

额外优化提示

你的实体类中主键字段的@Column(unique = true, nullable = true)配置不合理,主键默认具备唯一、非空特性,可简化为:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

内容的提问来源于stack exchange,提问作者Raúl Peñate

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:25:14