org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session f

系统中。某个功能就是用户做批量操作的。在实现上点击某个按钮后,在后台就会创建多个线程进行批量的操作。这个功能可能会被多个人使用。现在的问题是应用的线程数是固定的,数据库连接数也是固定的,这个功能的多人使用后,会影响其他用户的登录系统以及系统操作。会不会是声明式事务导致这些线程(不访问数据库,已将调用线程的方法配置为非事务(NOT_SUPPORTED了)执行)执行时也占用事务和数据库连接占用导致的?请高手指导

spring3+hibernate4的话要注意配置。

使用 hibernate4,在不使用OpenSessionInView模式时,在使用getCurrentSession()时会有如下问题:

当有一个方法list 传播行为为Supports,当在另一个方法getPage()(无事务)调用list方法时会抛出org.hibernate.HibernateException: No Session found for current thread 异常。
这是因为getCurrentSession()在没有session的情况下不会自动创建一个,不知道这是不是Spring3.1实现的bug,欢迎大家讨论下。

因此最好的解决方案是使用REQUIRED的传播行为。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-12
不能打开hibernate会话,简单看一下错误你是将Hibernate和spring集成了,在spring文件中配置hibernate,你看看hibernate连接数据库配置是否正确。
第2个回答  2012-07-12
如果数据库配置正确,有可能是当前线程 没有绑定seesion。getSesssion(false)
第3个回答  2014-12-10
参考答案 有生命,那里便有希望。本回答被提问者采纳
相似回答