无法使用 Hibernate 访问 Postgres 数据库

Posted

技术标签:

【中文标题】无法使用 Hibernate 访问 Postgres 数据库【英文标题】:Cannot access Postgres database with Hibernate 【发布时间】:2021-05-19 03:20:00 【问题描述】:

我已经在寻找解决方案,但找不到任何解决方案。

我的问题是我无法通过 Hibernate 访问名为 IncomeOutgo 的 Postgres 数据库。

我在调用我的 Thymeleaf/html 网站时总是收到此错误消息。

我的 application.properties 看起来也像

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=none
spring.jpa.hibernate.show-sql=true
spring.datasource.url=jdbc:postgresql://192.168.0.227:5432/IncomeOutgo
spring.datasource.username=postgres
spring.datasource.password=XXX
#spring.jpa.properties.hibernate.format_sql=true

我的表格在 Postgres (DBeaver) 中看起来像吗:

最后但并非最不重要的是,我的域/实体看起来像:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table
public class IncomeOutgo extends AbstractPersistable<Long> 

    @Version
    @Column(name ="id")
    private Long id;

    @Column(name="dayofweek")
    private Date dayofweek;

    @Size(min = 5, max = 50)
    @Column(name ="person")
    private String person;

    @Min(0)
    @Column(name ="version")
    private Integer version;

    @Column(name="income")
    private int income;

    @Column(name="outgo")
    private int outgo;

也许,有人可以告诉我我的错误是什么?

提前致谢!

【问题讨论】:

使用@Table注解尝试显式表名 我用@Table="incomeoutgo" 试了一下(省略spring.datasource.url=jdbc:postgresql://192.168.0.227:5432/--OMITTED--)错误信息:org.postgresql .util.PSQLException: 错误: 关系 "incomeoutgo" 不存在以及@Table="IncomeOutgo" 并省略 spring.datasource.url=jdbc:postgresql://192.168.0.227:5432/--OMITTED--) 错误消息:org.postgresql.util.PSQLException:错误:关系“income_outgo”不存在 您的默认架构是什么?试试@Table(name="incomeoutgo", schema="IncomeOutgo") 我猜你已经检查了桌面上的赠款。 也试试@Table(name="\"incomeoutgo\"") 回答问题:SELECT current_schema();产生IncomeOutgo。然后我尝试了你的建议(总是使用 spring.datasource.url=jdbc:postgresql://192.168.0.227:5432/):@Table(name="incomeoutgo", schema="IncomeOutgo"); error_message:错误:关系“income_outgo.incomeoutgo”不存在并且对于@Table(name="\"incomeoutgo\""); error_message:错误:关系“incomeoutgo”不存在 【参考方案1】:

我现在可以让它工作了。 Lesiak 对架构名称的提示让我做了一个解决方法。

我创建了一个新数据库:incomeoutgo(小写字母),并在 schema: public 下创建了一个新表:incomeoutgo 也带有小写字母。

我的域定义也是这样的:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name="incomeoutgo", schema = "public")
public class IncomeOutgo extends AbstractPersistable<Long> 

    @Version
    @NotNull
    @Column(name ="id")
    private Long id;

    @Column(name="dayofweek")
    private Date dayofweek;

    @Size(min = 5, max = 50)
    @Column(name ="person")
    private String person;

    @Min(0)
    @Column(name ="version")
    private Integer version;

    @Column(name="income")
    private int income;

    @Column(name="outgo")
    private int outgo;

【讨论】:

以上是关于无法使用 Hibernate 访问 Postgres 数据库的主要内容,如果未能解决你的问题,请参考以下文章

org.hibernate.HibernateException:无法访问 lob 流

Hibernate:无法访问 TransactionManager 或 UserTransaction 以进行物理事务委托

Hibernate 无法访问 phpMyAdmin 插入的数据

谁知道openlayers+geoserver +postgre部署的地图数据能不能点击放大缩小是不让地图数据重新访问posrtgre数

在windows上监视postgre 数据库 ,使用啥方式?

为 Eclipse 安装了 Hibernate Tools 插件,但无法访问代码生成功能