Spring Boot Data JPA教程中PostgreSQL数据库表无法创建的问题求助
解决Spring Boot Data JPA + PostgreSQL 表未创建且无日志反馈的问题
我仔细看了你提供的配置、代码和启动日志,找到了几个关键问题,这就是你看不到建表日志、数据库表也没生成的原因:
1. 配置文件的拼写错误
你的application.properties里有个语法错误,导致SQL日志无法输出:
spring.jpa-show-sql=true
正确的写法应该用点号分隔,不是连字符:
spring.jpa.show-sql=true
这个小错误直接让你看不到Hibernate执行的所有SQL语句,包括建表的SQL。
2. 缺少对应的JPA Repository接口
从日志里的这句能明显看出来问题:
2021-11-19 15:13:03.511 INFO 11480 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 5 ms. Found 0 JPA repository interfaces.
Spring Data JPA需要你为实体类定义对应的Repository接口,这样它才会触发Hibernate对该实体的DDL处理逻辑。你只需要创建一个简单的接口即可:
package com.example.demo.student; import org.springframework.data.jpa.repository.JpaRepository; public interface StudentRepository extends JpaRepository<Student, Long> { // 不需要写任何方法,Spring会自动生成代理实现 }
3. 额外需要确认的细节
- 先手动创建PostgreSQL中的
tutorialdb数据库:Hibernate的ddl-auto=update只会帮你创建表,不会自动创建数据库,你得先在PostgreSQL里建好这个库。 - 实体类扫描路径没问题:你的
Student类在com.example.demo.student,主应用类在com.example.demo,Spring Boot默认会扫描主类所在包及其子包的实体类,这部分是正常的。
验证步骤
- 修正配置文件的拼写错误
- 创建上面的
StudentRepository接口 - 重启应用
之后你就能在日志里看到Hibernate执行的建表SQL,同时PostgreSQL中会自动生成student表(默认是小写表名,由Hibernate根据实体类名转换而来)。
内容的提问来源于stack exchange,提问作者Rookie57
相关产品推荐
相关产品推荐

