spring-boot-starter-data-jpa 3.2.1中HibernateTemplate加载失败问题
解决HibernateTemplate在Spring Boot 3.2.1中无法加载的问题
问题根源很明确:Hibernate 6.x已经彻底移除了org.hibernate.Criteria类,而你使用的HibernateTemplate依赖这个旧API,所以在搭配spring-boot-starter-data-jpa 3.2.1(依赖hibernate-core 6.4.1.Final)时会出现类找不到的错误。
给你几个可行的解决思路:
- 直接弃用
HibernateTemplate:这是最推荐的方案。Spring官方早在多年前就建议使用JPA标准的EntityManager或者Spring Data JPA的Repository接口来替代HibernateTemplate,这些API更贴合现代JPA规范,也能更好地兼容Hibernate 6.x。 - 改用
JpaTemplate:如果习惯模板式操作,可以切换到JpaTemplate,它基于JPA标准API,不依赖Hibernate的私有类,能适配Hibernate 6.x。不过同样更建议直接使用EntityManager注入操作。 - 降级Spring Boot版本:如果短期内无法重构代码,可以把Spring Boot版本降到2.x系列(比如2.7.x),这个版本依赖的Hibernate 5.x还保留
org.hibernate.Criteria类,但这只是临时方案,旧版本后续会停止维护,存在安全风险。
内容的提问来源于stack exchange,提问作者kimler jin
相关产品推荐
相关产品推荐

