1. 程式人生 > >could not initialize proxy - no Session (SSH)

could not initialize proxy - no Session (SSH)

網頁異常資訊:

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>