Hibernate JPA报错:Table 'zahnmobil.worker_table'不存在求助
解决Table 'zahnmobil.worker_table' doesn't exist 错误
遇到的核心错误:
Caused by: java.sql.SQLSyntaxErrorException: Table 'zahnmobil.worker_table' doesn't exist
结合你提供的代码和配置,以下是具体的排查和解决思路:
1. 修复application.yml的JPA配置缩进问题
你的application.yml中,jpa节点和spring节点是同级的,这会导致Spring Boot无法识别JPA相关配置,Hibernate的自动建表逻辑完全不生效。必须将jpa节点缩进在spring节点下:
修正后的配置片段:
spring: datasource: username: root password: password url: jdbc:mysql://${DATABASE_HOST:localhost}:${SQL_PORT:3306}/${DATABASE_NAME:zahnmobil}?createDatabaseIfNotExist=true&useSSL=false # 将jpa节点移到spring下 jpa: database-platform: ${SQL_DIALECT:org.hibernate.dialect.MySQL8Dialect} generate-ddl: true hibernate: ddl-auto: ${SQL_DDL_AUTO:create-drop} show-sql: true testDatabase: enabled: ${DATABASE_POPULATE_WITH_TESTOBJECTS:true}
2. 清理pom.xml中的重复依赖
你的依赖存在两处重复,可能引发依赖冲突,影响Hibernate正常工作:
- 重复引入了
spring-boot-starter-test(保留第一个带testscope的即可) - 单独引入了
spring-data-jpa,但spring-boot-starter-data-jpa已经包含该依赖,需删除重复项
清理后的核心依赖片段:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- 其他必要依赖保留 --> </dependencies>
3. 优化实体类的JPA注解
- 移除类上多余的
@Transactional注解,该注解用于事务控制,放在实体类上无意义 - 建议改用JPA标准的UUID生成策略,避免手动赋值可能引发的主键问题:
@Entity @Table(name="worker_table") public class Worker { @Id @GeneratedValue(strategy = GenerationType.UUID) private String id; @Column(name= "name") private String name; // 保留lombok注解或手动添加构造方法、getter/setter }
4. 验证数据库连接与权限
- 确认MySQL服务正在运行,
zahnmobil数据库已被创建(可通过MySQL客户端手动查看) - 检查
root用户是否拥有zahnmobil数据库的建表权限 - 验证数据库URL、用户名、密码是否正确
5. 开启Hibernate日志排查
添加日志配置,查看Hibernate是否生成并执行了建表语句:
logging: level: org.hibernate.SQL: DEBUG org.hibernate.tool.hbm2ddl: DEBUG
启动应用后,查看控制台日志,如果能看到create table worker_table (...)的SQL语句,说明自动建表逻辑已生效。
内容的提问来源于stack exchange,提问作者kawlorridor
相关产品推荐
相关产品推荐

