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

PostgreSQL关联'table_name'不存在问题求助:无法连接tableName表

解决PostgreSQL表名大小写匹配问题

问题原因

PostgreSQL默认会把未用双引号包裹的标识符(表名、列名)转为小写,而你的数据库表是大小写敏感的tableName,Hibernate自动生成的SQL会尝试查询table_name,因此触发"relation不存在"的错误。

解决方案

1. 确认实体类表名注解有效性

你已在@Table中通过转义双引号指定了正确表名,这部分配置没问题:

@Entity
@Table(name = "\"tableName\"")
data class tableName(
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "id")
        var id:Long = 0,

        @Column(name = "aseg")
        var aseg:String = "",

        @Column(name = "\"expir\"")
        var expir: Date? = null,
)

2. 全局启用Hibernate标识符引号包裹

在配置文件中添加以下配置,强制Hibernate对所有表名、列名用双引号包裹,避免自动转小写:

spring.jpa.properties.hibernate.globally_quoted_identifiers=true

该配置会让Hibernate生成的SQL中,所有标识符都带上双引号,完美匹配PostgreSQL的大小写敏感表名/列名。

3. 验证SQL输出

通过spring.jpa.show-sql=true查看控制台输出的SQL,确认生成的语句类似如下格式:

select t1_0.id,t1_0.aseg,t1_0."expir" from "tableName" t1_0

若表名和列名都被双引号包裹,说明配置生效。

额外检查点

  • 用SELECT * FROM "tableName";语句在数据库中验证,确认"tableName"表真实存在
  • 无需修改实体类名称或数据库表名,保持现有配置即可

内容的提问来源于stack exchange,提问作者Adonis Becerra Morales

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:38:24