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:关系不存在的主要内容,如果未能解决你的问题,请参考以下文章
将数组值从 JPA/Hibernate 传递给 PostgreSQL
org.postgresql.util.PSQLException:错误:关系不存在 PreparedStatement.executeQuery ()