关闭

关于Hibernate Could not obtain transaction-synchronized Session for current thread

标签: hibernatespring
2508人阅读 评论(0) 收藏 举报
分类:

最近几年一直再搞android,最近闲下来了,顺便玩一下web。

整了个最新版本的SSH(hibernate5.1.0+spring4.2.6+struts-2.5)

在写dao实现类的时候碰到一个问题,

@Repository
public class UserDaoImpl implements IUserDao {

	@Autowired
	private SessionFactory sessionFactory;

	private Session getSession(){
		return sessionFactory.getCurrentSession();
		
	}
	...	
}



用了sessionFactory.getCurrentSession()这个之后,会提示

org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread 这个异常。(据说hibernate 4以上的版本才会有)

这里可以用Session session = sessionFactory.openSession(),然后代码中去关闭 session.close.当然为了偷懒的原则

必须不自己去管理session。让Spring容器自己去处理。

研究了一下。发现 只要在

applicationContext.xml 中追加

 <!-- 配置事务管理器 --> 
    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> 
        <property name="sessionFactory" ref="sessionFactory"></property> 
    </bean>
     
    <tx:annotation-driven transaction-manager="transactionManager"/>


然后再在实现类加上@Transactional



@Repository
@Transactional
public class UserDaoImpl implements IUserDao {

	@Autowired
	private SessionFactory sessionFactory;

	private Session getSession(){
		return sessionFactory.getCurrentSession();
		
	}
	...	
}


这样问题就完美解决了。


2
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

SpringMVC4+Hibernate4运行报错Could not obtain transaction-synchronized Session for current thread

查了一下相关资料,整理如下: 原因:Hibernate4 No Session found for current thread原因 解决方法: 1.  在spring 配置文件中加入 ...
  • caiwenfeng_for_23
  • caiwenfeng_for_23
  • 2015-04-24 09:46
  • 34806

Could not obtain transaction-synchronized Session for current thread

用Junit做单元测试时,报了这个错:Could not obtain transaction-synchronized Session for current thread 原因是没有为组件加...
  • crazyitlhs
  • crazyitlhs
  • 2015-10-26 17:01
  • 3689

Could not obtain transaction-synchronized Session for current thread 异常处理方式

String4版本 在biz层做多线程处理集合任务报错: Could not obtain transaction-synchronized Session for current thread ...
  • caodegao
  • caodegao
  • 2016-02-25 09:38
  • 8238

Could not obtain transaction-synchronized Session for current thread

问题报错代码: org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for c...
  • z313410164
  • z313410164
  • 2016-03-24 18:51
  • 416

SpringMVC中Could not obtain transaction-synchronized Session for current thread的解决方案

org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thre...
  • frankcheng5143
  • frankcheng5143
  • 2016-05-03 22:28
  • 12099

Could not obtain transaction-synchronized Session for current thread -无法获取当前线程的事务同步会话-解决方案

Could not obtain transaction-synchronized Session for current thread的解决方案如下: 1. essionfactory.getCur...
  • lukedan18161468112
  • lukedan18161468112
  • 2016-12-27 10:25
  • 1500

Hibernate4 提示Could not obtain transaction-synchronized Session for current thread

非web项目通过getCurrentSession()这个api获取session时一直提示Could not obtain transaction-synchronized Session for ...
  • xs521860
  • xs521860
  • 2016-11-15 21:42
  • 629

org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thre

在spring中用到Hibernate,Junit Test 报此错误 ,看错误信息应该联想到可能是缺少@Transactional注解,这是事务管理的注解,在Imp里面,与数据库相关的类,应该加上注...
  • A13432421434
  • A13432421434
  • 2017-05-26 10:54
  • 888

解决 org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for cu

在web.xml添加如下代码 SpringOpenSessionInViewFil
  • suzunshou
  • suzunshou
  • 2015-10-30 11:07
  • 5633

Transactional注解下使用synchronized有坑

Transactional注解下使用synchronized有坑
  • sunjigen803
  • sunjigen803
  • 2016-09-18 18:23
  • 784
    个人资料
    • 访问:12631次
    • 积分:244
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论