failed to lazily initialize a collection of role: could not initialize proxy - no Session
2018-01-22 13:46
579 查看
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用链接查询解决懒加载,但是当一个类映射多个集合时,她有多种一对多的关系集合,用链接查询就需要将所有关联的多的集合都连接起来
但是在显示层需要用到“多”对象的数据,由于此时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用链接查询解决懒加载,但是当一个类映射多个集合时,她有多种一对多的关系集合,用链接查询就需要将所有关联的多的集合都连接起来
相关文章推荐
- failed to lazily initialize a collection of role: could not initialize proxy - no Session
- failed to lazily initialize a collection of role: , could not initialize proxy - no Session
- failed to lazily initialize a collection of role: com.bean.User.activities, could not initialize pro
- HTTP Status 500 - Could not write content: failed to lazily initialize a collection of role
- FetchType.LAZY 时属性加上@JsonIgnore,避免返回时报错:Could not write JSON: failed to lazily initialize a collection of role
- failed to lazily initialize a collection of role:XXX, no session
- failed to lazily initialize a collection of role
- fastjson序列化hibernate查询的数据报错:failed to lazily initialize a collection of role
- failed to lazily initialize a collection of role:报错
- failed to lazily initialize a collection of role问题
- hibernate 延迟加载的错误 failed to lazily initialize a collection of role
- JPA中的failed to lazily initialize a collection of role:xxxx no session or session was closed异常分析与解决
- Hibernate问题 failed to lazily initialize a collection of role
- failed to lazily initialize a collection of role
- failed to lazily initialize a collection of role
- failed to lazily initialize a collection of role
- failed to lazily initialize a collection of role:
- ejb 学习:遇到错误:LazyInitializationException.<init> : failed to lazily initialize a collection of role:
- failed to lazily initialize a collection of role: XXXXXXXX no session or session was closed
- org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.jav