could not initialize proxy - no Session (SSH)

本文详细解析了在SSH整合环境中,使用Hibernate时遇到的LazyInitializationException异常原因,并提供了两种有效的解决方案:一是通过修改POJO.hbm.xml文件关闭懒加载模式;二是配置OpenSessionInViewFilter过滤器,确保在整个视图渲染过程中Session保持打开状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网页异常信息:

HTTP Status 500 - org.hibernate.LazyInitializationException: failed to lazily initialize a 
collection of role: cn.ssh.wms.domain.Role.permissions, could not initialize proxy - no Session

从上信息可以看出没有找到Session代理

由于SSH整合时Session已经交给了Spring来管理-Spring在执行完毕查询时就会立即将Session关闭,所有当开启懒加载的查询去查找结果集时就会发现找不到Session所以就报错找不到Session ; 解决方法有两种:

方法一 : (POJO.hbm.xml)

<!-- 多对多权限关联
        	bag:去除重复元素
        	name:角色集合名称
        	table:数据库表名
        	lazy:是否开启懒加载模式,默认true
        		解决方案一:将lazy属性值改为false,关闭懒加载模式即可
         -->
        <bag name="permissions" table="role_permission" lazy="true">
        	<!-- 外键名称 -->
        	<key column="role_id"/>
        	<!-- class:关联实体类的地址
        		 column:数据库对应的列名
        	 -->
        	<many-to-many class="cn.ssh.wms.domain.Permission" column="permission_id"/>
        </bag>

 

方法二 : (web.xml)

 	<!-- OSIV 在struts2核心过滤器之前配置 -->
 	<filter>
 		<filter-name>OSIV</filter-name>
 		<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
 	</filter>
 	<filter-mapping>
 		<filter-name>OSIV</filter-name>
 		<!-- 拦截所有.action请求 -->
 		<url-pattern>*.action</url-pattern>
 	</filter-mapping>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值