异常:No Hibernate Session bound to thread, and configuration does not allow creation

本文探讨了NoHibernateSessionboundtothread异常的几种常见原因及解决方案,包括调整Spring配置以正确管理事务、添加OpenSessionInViewFilter配置来支持懒加载,以及确保事务配置正确。

No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here–没有Hibernate会话绑定到线程,并且配置不允许在这里创建非事务性会话。
出现这种异常的原因很多: (springmvc spirng hibernate)框架
一是:使用sessionFactory.getCurrentSession()获取session时出现异常:在加载mvc–servlet(dispatcherservlet.)是开启service注解扫描,此时service层还没有开启事务管理。Spring容器优先加载由ServletContextListener(对应applicationContext.xml)产生的父容器。而SpringMVC(对应dispatcher_servlet.xml)产生的是子容器。子容器的Controller进行扫描装配时装配的@Service注解的实例是没有经过事务加强处理,即没有事务处理能力的Service。为了得到经过事务加强的service实例,在context.xml开启service注解扫描,在servlet.xml排除service扫描
二是:hibernate懒加载造成的:web.xml缺少配置

<filter>  
    <filter-name>openSessionInViewFilter</filter-name>  
    <filter-class>  
        org.springframework.orm.hibernate3.support.OpenSessionInViewFilter  
    </filter-class>  
</filter>  

<filter-mapping>  
    <filter-name>openSessionInViewFilter</filter-name>  
    <url-pattern>/*</url-pattern>  
</filter-mapping>  

三是:没有开启事务配置,或者事务配置属性错误

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值