当前位置: 代码迷 >> 综合 >> org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: XXXX
  详细解决方案

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: XXXX

热度:17   发布时间:2024-01-04 14:01:54.0
这个异常:org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: org.joshua.ss.entity.SysUsers.sysUsersRoleses, no session or session was closed
Exception in thread "main" org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: org.joshua.ss.entity.SysUsers.sysUsersRoleses, no session or session was closedat 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.iterator(PersistentSet.java:186)


原因: 在hibernate的映射关系中由于延迟加载,之前的操作使session已经关闭,所以加载set属性时无可用session
解决办法:在映射文件中设置set属性 lazy='false'
<set name="sysUsersRoleses" inverse="true" cascade="all" lazy="false"><key><column name="USER_ID" length="32" /></key><one-to-many class="org.joshua.ss.entity.SysUsersRoles" /></set>

具体参考:http://fendoubattier.iteye.com/blog/1040236
  相关解决方案