postgresql 和 jpa:关系不存在

Posted

技术标签:

【中文标题】postgresql 和 jpa:关系不存在【英文标题】:postgresql and jpa: relation does not exist 【发布时间】:2021-06-19 06:38:36 【问题描述】:

我再次请求您的 precios 帮助解决 Hibernate、Springboot、Postgresql 的问题。 在我的项目中,我读写了几十张表,我对每张表都使用了相同的配置,没有问题,但是其中一个出现了一些问题:

这是映射我的表的类:

package com.mycompany.ingestion.entities.mappingdb;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name="td_titauto")
public class TdTitAuto 
    
    
    @Id
    @SequenceGenerator(name = "seq_td_titauto", sequenceName = "seq_td_titauto", allocationSize=1)
    @GeneratedValue(generator = "seq_td_titauto", strategy = GenerationType.SEQUENCE)
    private Long idTitAuto;
    private String idAuto;
    public Long getIdTitAuto() 
        return idTitAuto;
    
    public void setIdTitAuto(Long idTitAuto) 
        this.idTitAuto = idTitAuto;
    
    public String getIdAuto() 
        return idAuto;
    
    public void setIdAuto(String idAuto) 
        this.idAuto = idAuto;
    


运行项目时,出现以下错误: 错误:列 tdtitauto0_.id_tit_auto 不存在 提示:也许你的意思是引用列“tdtitauto0_.id_titauto”。

DB 上的表名是 td_titaut。如果我在注解@Table 上添加架构的名称,则没有任何变化,但如果我删除@Table 注解,则会出现以下错误:

错误:关系“td_tit_auto”不存在 在这种情况下,我不知道为什么要添加下划线字符(表名为 td_titauto,只有一个下划线)。

我也尝试过使用配置文件和注释,但没有任何改变。 有什么建议? 非常感谢,我真的很感激 我最诚挚的问候 斯蒂芬

【问题讨论】:

【参考方案1】:

您的数据库中似乎有一个名为td_titauto 的表,但实体的默认名称是td_tit_auto。可能是因为实体名称是TdTitAuto 而不是TdTitauto

Hibernate ORM 期望表中有一个名为id_tit_auto 的列,但我怀疑您的数据库中的列名是id_titauto。 因此,您需要以这种方式更改映射:

@Entity
@Table(name="td_titauto")
public class TdTitAuto 
    @Id
    @Column(name="id_titauto")
    @SequenceGenerator(...)
    @GeneratedValue(...)
    private Long idTitAuto;

假设id列的名称是id_titauto

也许,这也可以:

@Entity
public class TdTitauto 
    @Id
    @SequenceGenerator(...)
    @GeneratedValue(...)
    private Long idTitauto;

【讨论】:

哦,是的,现在它可以正常工作了。非常感谢,这几天我一直在与这个问题作斗争。 没问题,你能把这个标记为正确的解决方案吗?

以上是关于postgresql 和 jpa:关系不存在的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 外表错误关系不存在

将数组值从 JPA/Hibernate 传递给 PostgreSQL

关系“表名”不存在(postgresql)

Postgresql 错误:关系不存在

org.postgresql.util.PSQLException:错误:关系不存在 PreparedStatement.executeQuery ()

错误:关系列不存在 PostgreSQL,无法运行插入查询