无法使用 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数