You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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(保留第一个带test scope的即可)
  • 单独引入了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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 09:20:06