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

Hibernate抛出java.lang.NoSuchMethodError: Session.createQuery问题求助

解决Hibernate 5.x中createQuery()方法找不到的问题

你在Hibernate 5.2.11版本里碰到的createQuery()方法不存在的问题,我帮你梳理下常见原因和解决办法:

1. 确认Session的正确导入

Hibernate 5.x里createQuery()方法是定义在org.hibernate.Session接口中的,如果你误导入了JPA的javax.persistence.EntityManager或者旧的Hibernate Session实现,肯定会找不到这个方法。检查你的导入语句:

// 正确的导入
import org.hibernate.Session;
// 错误的导入(会导致找不到createQuery)
// import javax.persistence.EntityManager;

2. 确保Session的获取方式正确

要从Hibernate的SessionFactory获取Session,而不是JPA的EntityManagerFactory:

// 正确的Session获取示例
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();

3. 规范HQL语句与Query调用

虽然你已经导入了org.hibernate.query.Query,还要注意createQuery()的调用格式和HQL语法:

  • HQL里的FROM关键字要对应实体类名(不是数据库表名)
  • Hibernate 5.x的createQuery()支持泛型,建议指定实体类型避免强制转换
// 正确的HQL调用示例,替换成你的实体类名
String hql = "FROM User"; 
Query<User> query = session.createQuery(hql, User.class);
List<User> resultList = query.list();

4. 检查项目依赖完整性

如果依赖缺失也会导致方法找不到,确保你的构建文件里包含了正确的Hibernate Core依赖:

<!-- Maven依赖示例 -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.2.11.Final</version>
</dependency>

5. 清理Eclipse项目缓存

有时候Eclipse的缓存会导致类路径识别错误,可以尝试:

  • 右键项目 → Maven → Update Project(Maven项目)
  • 右键项目 → Refresh
  • 菜单栏Project → Clean...清理项目

如果以上步骤都试过仍有问题,可以贴出你的代码片段,我再帮你排查具体问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:34:33