【问题标题】:postgresql and jpa: relation does not existpostgresql 和 jpa:关系不存在
【发布时间】: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,只有一个下划线)。

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

【问题讨论】:

    标签: postgresql hibernate jpa annotations mapping


    【解决方案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;
    }
    

    【讨论】:

    • 哦,是的,现在它可以正常工作了。非常感谢,这几天我一直在与这个问题作斗争。
    • 没问题,你能把这个标记为正确的解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    相关资源
    最近更新 更多