getCurrentSession 出现No hibernate bound to the thread

来源:互联网 发布:java开发机器人 编辑:程序博客网 时间:2024/05/16 05:03

1、问题情景

在Dao里调用getCurrentSession()
代码如下

@Override    public WebSite findWebSite() {        Session session =  this.getHibernateTemplate().getSessionFactory().getCurrentSession();        Query query  = session.createQuery("from WebSite");        WebSite webSite = (WebSite)query.uniqueResult();        return webSite;    }

此dao不在spring事务上下文中
出现一下异常

No hibernate bound to the thread

2、处理过程

  1. 首先利用this.getSession()获取的话,不会出现此异常。
  2. 很明显是getSession()与getCurrentSession()有区别
getSession()需要手动关闭session。而getCurrentSession()绑定了线程,依靠**事务**提交或回滚进行自动关闭session

getCurrentSession()是依靠事务提交或回滚进行自动关闭session的。
这句话解释了问题所在。自然就解决了出现No hibernate bound to the thread异常

阅读全文
0 0