failed to lazily initialize a collection of role: could not initialize proxy - no Session

hibernate 中,在关联一对多时,默认懒加载,在DAO层,用session取值的时候,只会取当前“一”的对象,取完值后session关闭了,

但是在显示层需要用到“多”对象的数据,由于此时session已经关闭,再取“多”的值就会报错

failed to lazily initialize a collection of role: could not initialize proxy - no Session

两种方案:

一在session关闭之前,将关联的“多”集合取值

方法2  3  5即是


二绑定当前线程,使session保持open

方法1  4即是

解决办法:

1在配置文件里添加过滤器,本人项目中用到的hibernate4所以用的是org.springframework.orm.hibernate4.support.OpenSessionInViewFilter

如果用的是hibernate3,则是org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

<filter>
        <filter-name>openSessionInView</filter-name>
        <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>openSessionInView</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

filter尽量写在前面,因为加载顺序不同

2lazy=false;


3在DAO取值时,即在session.close()这行代码执行之前,通过Hibernate.initialize方法强制读取数据 ,这个方法本人试了之后没起作用

4org.springframework.orm.hibernate4.support.openSessionInViewInterceptor

<beans>      <bean name="openSessionInViewInterceptor" class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">     <property name="sessionFactory">     

<ref bean="sessionFactory"/>    

  </property>    

 </bean>   

   <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">     <property name="interceptors">   

<list>      <ref bean="openSessionInViewInterceptor"/>      </list> 

     </property>     

 <property name="mappings">    

  </property>   

... 

  </bean> ... </beans>  


5用链接查询解决懒加载,但是当一个类映射多个集合时,她有多种一对多的关系集合,用链接查询就需要将所有关联的多的集合都连接起来

posted @   silentmuh  阅读(571)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
Live2D
欢迎阅读『failed to lazily initialize a collection of role: could not initialize proxy』
  1. 1 Walk Thru Fire Vicetone
  2. 2 爱你 王心凌
  3. 3 Inspire Capo Productions - Serenity
  4. 4 Welcome Home Radical Face
  5. 5 粉红色的回忆 李玲玉
爱你 - 王心凌
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 陈思宇/谈晓珍/潘瑛

作曲 : Lee Yong Min/Hwang Se Joon

Rap词:MC HAN韩勇

RAP:

Ya boy MC HAN

我弹的钢琴都是为了你弹

弹了那么久还是觉得浪漫

我弹的时候能听到你在唱

感觉上你在这

跟我一起说话

一天到晚 我不停地想

You’re all that I think of

You’re all that I want

跟你一起总是让我特别开心

不论发生什么事我永远爱你

如果你突然打了个喷嚏 那一定就是我在想你

如果半夜被手机吵醒 啊那是因为我关心

常常想你说的话是不是别有用心

明明很想相信 却又忍不住怀疑

在你的心里 我是否就是唯一 爱就是有我常烦着你

Ho Baby 情话多说一点 想我就多看一眼

表现多一点点 让我能 真的看见

Oh Bye 少说一点 想陪你不止一天

多一点 让我 心甘情愿 爱你

喜欢在你的臂弯里胡闹 你的世界是一座城堡

在大头贴画满心号 贴在手机上对你微笑

常常想我说的话你是否听得进去

明明很想生气 却又止不住笑意

Oh Oh 在我的心里 你真的就是唯一 爱就是有我常赖着你

Ho Baby 情话多说一点 想我就多看一眼

表现多一点点 让我能 真的看见

Oh Bye 少说一点 想陪你不止一天

多一点 让我 心甘情愿 爱你

就这样 一天多一点 慢慢地累积感觉

两人的世界 就能够贴近一点

Ho Baby 情话多说一点 想我就多看一眼

表现多一点点 让我能 真的看见

Oh Bye 少说一点 想陪你不止一天

多一点 让我 心甘情愿 爱你

Ho Baby 情话多说一点 想我就多看一眼

表现多一点点 让我能 真的看见

Oh Bye 少说一点 想陪你不止一天

多一点 让我 心甘情愿 爱你

多一点 才会慢慢发现 因为你 让我心甘情愿

(OT:Nae Yae Gil Eo Bwa)

点击右上角即可分享
微信分享提示