2013-08-13 14:33:42 [ERROR] (LazyInitializationException.java:42) - failed to lazily initialize a collection of role: com.huawei.ciweb.entity.po.RndlteCiVersion.rndlteCiBrokens, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.huawei.ciweb.entity.po.RndlteCiVersion.rndlteCiBrokens, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:108)
at org.hibernate.collection.PersistentSet.equals(PersistentSet.java:429)
at java.util.Vector.indexOf(Vector.java:361)
at java.util.Vector.contains(Vector.java:320)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:110)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:363)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:223)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:171)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:161)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:127)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:363)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:223)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:171)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:161)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:127)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:363)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:223)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:171)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:161)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:127)
at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:95)
at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116)
at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:196)
at org.apache.struts2.json.JSONResult.execute(JSONResult.java:170)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:374)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.huawei.ciweb.entity.po.RndlteCiVersion" table="rndlte_ci_version" >
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="version" type="java.lang.String">
<column name="version" length="100" not-null="true" unique="true">
<comment>版本号</comment>
</column>
</property>
<property name="commonVersion" type="java.lang.String">
<column name="common_version" length="100" not-null="true">
<comment>俗名</comment>
</column>
</property>
<property name="versionPo" type="java.lang.String">
<column name="version_po" length="100" not-null="true">
<comment>版本经理或软件经理</comment>
</column>
</property>
<property name="connectionPerson" type="java.lang.String">
<column name="connection_person" length="2000">
<comment>版本的所有接口人</comment>
</column>
</property>
<property name="versionDomain" type="java.lang.String">
<column name="version_domain" length="50" not-null="true">
<comment>域</comment>
</column>
</property>
<property name="software" type="java.lang.String">
<column name="software" length="500">
<comment>软件包Summary.xml文件共享路径</comment>
</column>
</property>
<property name="smoking" type="java.lang.String">
<column name="smoking" length="500">
<comment>冒烟Summary.xml文件共享路径</comment>
</column>
</property>
<property name="adapter" type="java.lang.String">
<column name="adapter" length="500">
<comment>适配层Summary.xml文件共享路径</comment>
</column>
</property>
<property name="material" type="java.lang.String">
<column name="material" length="500">
<comment>资料Summary.xml文件共享路径</comment>
</column>
</property>
<property name="necessaryTool" type="java.lang.String">
<column name="necessary_tool" length="500">
<comment>配套工具Summary.xml文件共享路径</comment>
</column>
</property>
<property name="realtimeSharedDirectory" type="java.lang.String">
<column name="realtime_shared_directory" length="500">
<comment>实时构建工程共享目录</comment>
</column>
</property>
<property name="wirelessMeasuringLink" type="java.lang.String">
<column name="wireless_measuring_link" length="500">
<comment>无线度量链接</comment>
</column>
</property>
<property name="measurePath" type="java.lang.String">
<column name="measure_path" length="500">
<comment>CI度量的地址</comment>
</column>
</property>
<property name="ciPath" type="java.lang.String">
<column name="ci_path" length="500">
<comment>CI度量的地址</comment>
</column>
</property>
<property name="whetherShowIndex" type="java.lang.String">
<column name="whether_show_index" length="1">
<comment>1:展示在主页;0:不展示在主页</comment>
</column>
</property>
<set name="rndlteCiResults" inverse="true">
<key>
<column name="flowid" not-null="true">
<comment>版本ID</comment>
</column>
</key>
<one-to-many class="com.huawei.ciweb.entity.po.RndlteCiResult" />
</set>
<set name="rndlteCiBrokens" inverse="true">
<key>
<column name="flowid" not-null="true">
<comment>责任组</comment>
</column>
</key>
<one-to-many class="com.huawei.ciweb.entity.po.RndlteCiBroken" />
</set>
<set name="rndlteCiPlans" inverse="true">
<key>
<column name="version_id">
<comment>版本外键</comment>
</column>
</key>
<one-to-many class="com.huawei.ciweb.entity.po.RndlteCiPlan" />
</set>
</class>
</hibernate-mapping><?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.huawei.ciweb.entity.po.RndlteCiBroken" table="rndlte_ci_broken" >
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<many-to-one name="rndlteCiGroup" class="com.huawei.ciweb.entity.po.RndlteCiGroup" fetch="select" >
<column name="groupid" not-null="true">
<comment>责任组</comment>
</column>
</many-to-one>
<many-to-one name="rndlteCiVersion" class="com.huawei.ciweb.entity.po.RndlteCiVersion" fetch="select" lazy="false">
<column name="flowid" not-null="true">
<comment>版本</comment>
</column>
</many-to-one>
<property name="brokenTime" type="java.util.Date">
<column name="broken_time" length="0">
<comment>版本打断时间</comment>
</column>
</property>
<property name="repairTime" type="java.util.Date" >
<column name="repair_time" length="0">
<comment>版本修复时间</comment>
</column>
</property>
<property name="failedReason" type="java.lang.String">
<column name="failed_reason" length="1000">
<comment>失败原因</comment>
</column>
</property>
<property name="feedbackPerson" type="java.lang.String">
<column name="feedback_person" length="50">
<comment>反馈人</comment>
</column>
</property>
<property name="feedbackTime" type="java.util.Date">
<column name="feedback_time" length="0">
<comment>反馈时间</comment>
</column>
</property>
</class>
</hibernate-mapping>帮忙看下什么原因,我在 many-to-one 加了 lazy="false"
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.huawei.ciweb.entity.po.RndlteCiVersion.rndlteCiBrokens, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:108)
at org.hibernate.collection.PersistentSet.equals(PersistentSet.java:429)
at java.util.Vector.indexOf(Vector.java:361)
at java.util.Vector.contains(Vector.java:320)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:110)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:363)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:223)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:171)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:161)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:127)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:363)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:223)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:171)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:161)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:127)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:363)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:223)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:171)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:161)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:127)
at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:95)
at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116)
at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:196)
at org.apache.struts2.json.JSONResult.execute(JSONResult.java:170)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:374)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.huawei.ciweb.entity.po.RndlteCiVersion" table="rndlte_ci_version" >
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="version" type="java.lang.String">
<column name="version" length="100" not-null="true" unique="true">
<comment>版本号</comment>
</column>
</property>
<property name="commonVersion" type="java.lang.String">
<column name="common_version" length="100" not-null="true">
<comment>俗名</comment>
</column>
</property>
<property name="versionPo" type="java.lang.String">
<column name="version_po" length="100" not-null="true">
<comment>版本经理或软件经理</comment>
</column>
</property>
<property name="connectionPerson" type="java.lang.String">
<column name="connection_person" length="2000">
<comment>版本的所有接口人</comment>
</column>
</property>
<property name="versionDomain" type="java.lang.String">
<column name="version_domain" length="50" not-null="true">
<comment>域</comment>
</column>
</property>
<property name="software" type="java.lang.String">
<column name="software" length="500">
<comment>软件包Summary.xml文件共享路径</comment>
</column>
</property>
<property name="smoking" type="java.lang.String">
<column name="smoking" length="500">
<comment>冒烟Summary.xml文件共享路径</comment>
</column>
</property>
<property name="adapter" type="java.lang.String">
<column name="adapter" length="500">
<comment>适配层Summary.xml文件共享路径</comment>
</column>
</property>
<property name="material" type="java.lang.String">
<column name="material" length="500">
<comment>资料Summary.xml文件共享路径</comment>
</column>
</property>
<property name="necessaryTool" type="java.lang.String">
<column name="necessary_tool" length="500">
<comment>配套工具Summary.xml文件共享路径</comment>
</column>
</property>
<property name="realtimeSharedDirectory" type="java.lang.String">
<column name="realtime_shared_directory" length="500">
<comment>实时构建工程共享目录</comment>
</column>
</property>
<property name="wirelessMeasuringLink" type="java.lang.String">
<column name="wireless_measuring_link" length="500">
<comment>无线度量链接</comment>
</column>
</property>
<property name="measurePath" type="java.lang.String">
<column name="measure_path" length="500">
<comment>CI度量的地址</comment>
</column>
</property>
<property name="ciPath" type="java.lang.String">
<column name="ci_path" length="500">
<comment>CI度量的地址</comment>
</column>
</property>
<property name="whetherShowIndex" type="java.lang.String">
<column name="whether_show_index" length="1">
<comment>1:展示在主页;0:不展示在主页</comment>
</column>
</property>
<set name="rndlteCiResults" inverse="true">
<key>
<column name="flowid" not-null="true">
<comment>版本ID</comment>
</column>
</key>
<one-to-many class="com.huawei.ciweb.entity.po.RndlteCiResult" />
</set>
<set name="rndlteCiBrokens" inverse="true">
<key>
<column name="flowid" not-null="true">
<comment>责任组</comment>
</column>
</key>
<one-to-many class="com.huawei.ciweb.entity.po.RndlteCiBroken" />
</set>
<set name="rndlteCiPlans" inverse="true">
<key>
<column name="version_id">
<comment>版本外键</comment>
</column>
</key>
<one-to-many class="com.huawei.ciweb.entity.po.RndlteCiPlan" />
</set>
</class>
</hibernate-mapping><?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.huawei.ciweb.entity.po.RndlteCiBroken" table="rndlte_ci_broken" >
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<many-to-one name="rndlteCiGroup" class="com.huawei.ciweb.entity.po.RndlteCiGroup" fetch="select" >
<column name="groupid" not-null="true">
<comment>责任组</comment>
</column>
</many-to-one>
<many-to-one name="rndlteCiVersion" class="com.huawei.ciweb.entity.po.RndlteCiVersion" fetch="select" lazy="false">
<column name="flowid" not-null="true">
<comment>版本</comment>
</column>
</many-to-one>
<property name="brokenTime" type="java.util.Date">
<column name="broken_time" length="0">
<comment>版本打断时间</comment>
</column>
</property>
<property name="repairTime" type="java.util.Date" >
<column name="repair_time" length="0">
<comment>版本修复时间</comment>
</column>
</property>
<property name="failedReason" type="java.lang.String">
<column name="failed_reason" length="1000">
<comment>失败原因</comment>
</column>
</property>
<property name="feedbackPerson" type="java.lang.String">
<column name="feedback_person" length="50">
<comment>反馈人</comment>
</column>
</property>
<property name="feedbackTime" type="java.util.Date">
<column name="feedback_time" length="0">
<comment>反馈时间</comment>
</column>
</property>
</class>
</hibernate-mapping>帮忙看下什么原因,我在 many-to-one 加了 lazy="false"
解决方案 »
- hibernate创建oracle问题
- sping无法注入值,但是直接从配置文件读取又可以
- java设模式学习资源
- jboss 无法用本机ip地址访问,只能用localhost或127.0.0.1访问
- 求职中遇到关于EJB的问题,大家一起来解决看看。
- JB2005上面怎么发布一个web services呢?
- TOMCAT高手在那儿,JSP文件与CSS文件的问题,请看详细信息
- 为什么我的log4j找不到输出文件呢?
- 如何把字符串转成dom里的Document?
- 收附件的一个问题,各位帮帮忙啊!
- 求助,关于jbpm4.4中foreach的使用?嵌套怎么用?
- Spring 问题,请问下为什么加载不了配置文件
你是懒加载,这个没问题,不过你的懒加载是在session关闭时才进行的,
所以报这个错误。
解决方法:要不在session关闭前加载完数据,要不就延长session时间。
的确算个老问题、 我很少遇到过,网上说了一大堆、 没解决问题。 请问 要不在session关闭前加载完数据,要不就延长session时间。 具体做法? 谢谢
你要用spring来解决。
在web.xml文件中配一个监听器:
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
另一种是你在session没有关闭之前,获取一下你的com.huawei.ciweb.entity.po.RndlteCiVersion.rndlteCiBrokensrndlteCiBrokens 这个属性的值。
1.将你的懒加载去掉,
2.你在session关闭前,将那对象初始化下,
比如你取得懒加载对象,println一下它的属性。
其他的方法,你参考下:
http://www.iteye.com/problems/20454