Session/EntityManager is closed
Hinbernate操作数据库必须要开启事务, 但是在添加事务的时候遇到这个问题也是郁闷,
说Session被关闭了, 而这个Session又是必须的.
关键是我并没有关闭, 也找不到是哪里被关闭了的.

我把代码改成如下的样子, 则是可以运行的, 在执行之前,开启事务
/**
* 查询用户
* @param uid
* @return
*/
@Override
public User get(Integer uid) {
Transaction transaction = session.beginTransaction();
User user = null;
try {
user = session.get(User.class,uid);
transaction.commit();
} catch(Exception e) {
e.printStackTrace();
transaction.rollback();
}
return user;
}
原因分析: 每次调用了session之后, 在事务提交了以后就会把session关闭
这是因为Hibernate会维护这个Session, 在我提交事务的时候关闭Session
解决思路: 在代码执行之前, 开启Session, 添加如下代码:
@Override
public User get(Integer uid) {
Session session = HibernateUtil.getSession();
return session.get(User.class,uid);
}
问题解决!
附HibernateUtil的代码:
package com.bj186.crm.factory; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; /**
* Hinbernate工具类
*/
public class HibernateUtil { private static SessionFactory sessionFactory; private HibernateUtil() { } static {
//1. 声明配置对象,加载配置文件
Configuration configuration = new Configuration();
configuration.configure("hibernate.cfg.xml");
//2. 将配置文件告诉session工厂
sessionFactory = configuration.buildSessionFactory();
} //获取session工厂
public static Session getSession() {
if(sessionFactory !=null ) {
return sessionFactory.getCurrentSession();
}
return null;
} }
Session/EntityManager is closed的更多相关文章
- hibernate报错org.hibernate.SessionException: Session was already closed
org.hibernate.SessionException: Session was already closedat org.hibernate.internal.SessionImpl.clos ...
- hibernate的异常 Session was already closed
今天写hibernate时候遇到一些异常 代码: Session session = sessionFactory.getCurrentSession(); session.beginTransact ...
- oracle dblink造成远程数据库session过多
现场报网公司数据库连不上,先检查了下数据库processes=1500,session=2200.我认为非常大啊.这个数据库没有几个人用. 查看v$session中的session最多是哪个machi ...
- FortiGate日志中session clash
1.出现于:FortiGate v5.0和v5.2 2.出现原因 Session clash messages appear in the logs when a new session is cre ...
- Spring framework3.2整合hibernate4.1报错:No Session found for current thread
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransact ...
- JPA(四):EntityManager
Persistence Persistence类使用于获取EntityManagerFactory实例,该类包含一个名为createEntityManagerFactory的静态方法. // 创建En ...
- Mina Session
Chapter 4 - Session The Session is at the heart of MINA : every time a client connects to the server ...
- How to configue session timeout in Hive
This article explains how to configure the following settings in Hive:hive.server2.session.check.int ...
- JAVA PERSISTENCE API (JPA)
13.2.1. About JPA The Java Persistence API (JPA) is the standard for using persistence in Java proje ...
随机推荐
- JS获取子节点、父节点和兄弟节点的方法实例总结
转自:https://www.jb51.net/article/143286.htm 本文实例讲述了JS获取子节点.父节点和兄弟节点的方法.分享给大家供大家参考,具体如下: 一.js获取子节点的方式 ...
- linux 下 读取某个文件的某一行或者某几行
wc -l a.txt 统计a.txt 行数 查看文件a.txt的第190行到196行, sed -n '190,196p' a.txt 如果查看某一行用 sed -n 'a,bp' a.txt ...
- 任务48:Identity MVC:Model后端验证
任务48:Identity MVC:Model后端验证 RegisterViewModel using System; using System.Collections.Generic; using ...
- python help(int)
class int(object) | int(x=0) -> integer | int(x, base=10) -> integer | | Convert a number or s ...
- ie下,php HTTP_REFERER获取失败的整理
HTTP_REFERER有效的情况1.以iframe 形式调用地址2.以window.open调用,打开新页面window.open(url);3.使用window.location.replace在 ...
- python浅拷贝深拷贝
copy_list=list[:] 得到的是浅拷贝,即只能顶层拷贝,里面的嵌套不会复制一份. a = [0, [1, 2], 3] b = a[:] a[0] = 8 a[1][1] = 9 请问现 ...
- HAL之串口
在STM32cubeMX中 1 外设功能打开 2 GPIO对应管脚的串口功能打开 3 对应GPIO引脚的配置 4串口的配置,中断的设置 在MDK中 5.1 串口初始化MX_USART1_UART_In ...
- Vijos p1518河流 树形DP
https://vijos.org/p/1518 这题代码我基本是抄的,实在太难想了.但是也学到了一些东西. 比如:多叉树转二叉树存,这个细细一想,确实使得在dfs的时候,实现起来方便很多. 说一说具 ...
- Oracle及其相关软件历史版本下载地址
https://edelivery.oracle.com/osdc/faces/Home.jspx 打开上面这个链接,输入自己或可用的帐号即可. 搜索到自己想要下载的软件后,点击,软件会添加到购物车中 ...
- neo4j(图数据库)是什么?
不多说,直接上干货! 作为一款强健的,可伸缩的高性能数据库,Neo4j最适合完整的企业部署或者用于一个轻量级项目中完整服务器的一个子集存在. 它包括如下几个显著特点: 完整的ACID支持 高可用性 轻 ...