多线程hibernate session is closed!问题

问题描述

大家好,我在一个类里面执行多线程,会报如下错误:Exceptioninthread"池中线程-20"Exceptioninthread"池中线程-34"org.hibernate.SessionException:Sessionisclosed!atorg.hibernate.impl.AbstractSessionImpl.errorIfClosed(AbstractSessionImpl.java:72)atorg.hibernate.impl.SessionImpl.list(SessionImpl.java:1138)atorg.hibernate.impl.QueryImpl.list(QueryImpl.java:102)atcom.ffcs.upc.thread.modle_thread.ModleThread.run(ModleThread.java:45)atcom.ffcs.upc.util.ThreadPoolUtil$PooledThread.run(ThreadPoolUtil.java:160)线程类:publicclassModleThreadimplementsRunnable{publicModleThread(Stringmdn,StringmainId){super();this.mdn=mdn;this.mainId=mainId;service=SpringContextHolder.getBean("updateModleService");}publicvoidrun(){TUpcRemainMobileremainMobile=newTUpcRemainMobile();List<TUpcRemainMobile>list=service.createQuery("fromTUpcRemainMobilewheremainId=?andmdn=?",mainId,mdn).list();}}

主类里面就是启动多个ModleThread。

解决方案

解决方案二:
session关闭了,看看哪里关了
解决方案三:
看看session的生存周期
解决方案四:
debug每一句执行,看着session状态,找到在哪里关闭即可。
解决方案五:
service = SpringContextHolder.getBean("updateModleService");这个在构造方法执行,使用的是父线程session,而run中使用的新线程。应避免。

时间: 2025-01-27 10:36:21

多线程hibernate session is closed!问题的相关文章

spring-求解决No Hibernate Session bound to thread

问题描述 求解决No Hibernate Session bound to thread ssh项目在运行时控制台没有出错,但是页面出现 HTTP Status 500 - No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here怎么解决??? applicationContext.xml文件配置如下: <?xml version=&quo

session-Could not open Hibernate Session for transaction

问题描述 Could not open Hibernate Session for transaction ssh集成访问action时候报这个错误,数据库是oracle11g,数据库连接池用的c3p0,按照搜到的配置自动重连也没用.使用PLSQL可以连接到oracle spring配置文件关于数据库连接池和sessionFactory的内容如下: <bean id="sessionFactory" class="org.springframework.orm.hibe

Hibernage错误:Could not open Hibernate Session for transaction

今天在做SSH框架整合的时候碰到的这个问题,在测试service层的时候程序正常运行,但是添加Struts,在action层测试的时候提示了如下问题:Could not open Hibernate Session for transaction.大概意思就是数据库连接超时. 解决方法如下: 在spring的配置文件中添加如下配置 给sessionFactory的bean添加如下配置 <bean id="sessionFactory" class="org.spring

中文查询失败-hibernate session.createSQLQuery 模糊查询失败

问题描述 hibernate session.createSQLQuery 模糊查询失败 Hibernate: SELECT * from court where is_delete=0 and name like '%成成%' limit ? 将上面的SQL放到工具上面可以执行成功,但是hibernate查询不到数据. 如果我将高尔夫换成英文或者数字就可以查询成功,网上很多人都说是乱码照成的,但是我的SQL显示的不是乱码.请问有谁知道什么原因,并且如何解决. hibernate 版本4.3.5

No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional

      ssh整合时,使用this.getSessionFactory().getCurrentSession(),会报No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional异常.. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.Lo

问一个hibernate session问题。

问题描述 StatelessSession 接口 是否可以转化成为 Session 接口,怎么转换?或者用一个自定义的DataSource 替换 SessionFactory的 数据源,是否可行? 问题补充:环境上没有Spring的支持,现在我在考虑使用JNDI做数据源来绕过这个问题.现在的想法是代理一个DataSource,代理的DataSource通过读取一个环境变量来动态的切换供给的实际DataSource以达到多数据源支持的目的.这样应用程序在使用一个DataSource接口的情况下通过

java.lang.NoClassDefFoundError: org/hibernate/Session的异常处理

首先看异常: java.lang.NoClassDefFoundError:org/hibernate/Session 这个错误明显是找不到类库 发生这种异常的因素有可能: jar包导入不正确或缺少jar包 (hibernate.jar); 直接添加hibernate.jar包. 解决问题的方法永远不止一个 ----> 如果有jar而且还不行试试另一种方法, 比如原来是: hibernateTemplate.save(customer);        (发生这种错误都会指向一条sql语句) 现

为什么Hibernate Session第一次可以用,第二次就不可以呢?

问题描述 HibernateUtil代码packagecommon;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.cfg.Configuration;publicclassHibernateUtil{privatestaticfinalSessionFactorysessionFactory=buildSessionFactory();privatestaticSessionF

Hibernate Session机制与项目设计(高效性) 问题,高手请进(散分)

问题描述 我们在做项目的时候,总是会考虑对每一个操作打开一个新的session,然后对session进行单独的操作,然后关闭session.如果,我在整个项目运行的时候,都是通过一个session来进行,也就是说,所有的操作都是在一个session中进行,而这个session是不关闭的,只有等到tomcat关闭的时候session才关闭,这样会出问题吗?用一个session来管理缓存,这样效率高吗? 解决方案 解决方案二:tomcat关闭的时候session才关闭,这样会出问题吗?这样会使系统不