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

Java17+SpringBoot3.0.3迁移遇Hibernate类找不到错误求助

问题分析与解决

你遇到的java.lang.ClassNotFoundException: org.hibernate.query.BindableType是因为Hibernate版本不匹配导致的:

  • Spring Boot 3.x默认依赖Hibernate 6.x,而你手动引入的hibernate-core-jakarta:5.6.15.Final是Hibernate 5.x的Jakarta兼容版本,这个版本里根本不存在org.hibernate.query.BindableType类——该类是Hibernate 6.x新增的。
  • 同时你使用的hibernate-jpamodelgen:6.1.7.Final是Hibernate 6.x的注解处理器,和旧版本的Hibernate核心库产生了版本冲突。

修复步骤

  1. 移除手动添加的旧Hibernate核心依赖
    删除pom.xml中这段依赖:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core-jakarta</artifactId>
        <version>5.6.15.Final</version>
    </dependency>
    
  2. 移除spring-boot-starter-data-jpa中的排除项
    修改spring-boot-starter-data-jpa依赖,去掉对hibernate-core的排除,让Spring Boot自动引入适配的Hibernate版本:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <version>3.0.2</version>
    </dependency>
    
  3. 统一Hibernate jpamodelgen版本(可选但建议)
    Spring Boot 3.x的dependencyManagement已经包含了Hibernate的版本管理,你可以直接移除hibernate-jpamodelgen的版本属性,改用Spring Boot提供的版本:

    • 先删除properties中的<hibernate-jpamodelgen>6.1.7.Final</hibernate-jpamodelgen>
    • 然后修改jpamodelgen依赖:
      <dependency>
          <groupId>org.hibernate.orm</groupId>
          <artifactId>hibernate-jpamodelgen</artifactId>
          <scope>provided</scope>
      </dependency>
      

    这样能保证注解处理器和核心库版本完全一致,避免潜在冲突。

完成以上修改后,重新构建项目,ClassNotFoundException问题应该就能解决。

内容的提问来源于stack exchange,提问作者user21438552

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 23:47:40