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

调用getCurrentSession时出现jakarta.persistence.EntityManagerFactory无法解析错误

解决方法

这个错误核心是项目缺少Jakarta Persistence API依赖包,Hibernate 5后期及Hibernate 6版本已全面迁移到Jakarta EE规范,不再使用原Java EE的javax.persistence相关API。

1. 添加对应依赖

  • 若使用Maven,在pom.xml中加入:
<dependency>
    <groupId>jakarta.persistence</groupId>
    <artifactId>jakarta.persistence-api</artifactId>
    <version>3.1.0</version>
</dependency>
  • 若使用Gradle,在build.gradle中加入:
implementation 'jakarta.persistence:jakarta.persistence-api:3.1.0'

版本可根据Hibernate版本调整:Hibernate 6.0对应3.0版本,Hibernate 6.1+对应3.1及以上版本。

2. 检查实体类注解

确保实体类(比如Users)的注解使用jakarta.persistence.*包下的类,替换掉旧的javax.persistence.*注解,例如:

  • 替换import javax.persistence.Entity;为import jakarta.persistence.Entity;
  • 替换import javax.persistence.Id;为import jakarta.persistence.Id;

3. 清理重建项目

IDE缓存可能导致依赖未生效,执行项目的clean操作,再重新编译构建。

额外注意

getCurrentSession()需要在事务上下文内使用,且事务提交/回滚后该Session会自动关闭,无需手动调用session.close(),否则可能抛出异常。建议修改代码为:

try {
    session.beginTransaction();
    // 执行数据库操作,比如保存、查询
    session.getTransaction().commit();
} catch (Exception e) {
    if (session.getTransaction().isActive()) {
        session.getTransaction().rollback();
    }
    e.printStackTrace();
} finally {
    factory.close();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:35:57