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

来源:互联网 发布:同步推mac 编辑:程序博客网 时间:2024/06/05 05:10

ERROR LazyInitializationException:42 - failed to lazily initialize a collection of role: com.cdf.oa.bean.Role.privileges, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.cdf.oa.bean.Role.privileges, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:383)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:375)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:368)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:111)
at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:186)
at cn.itcast.oa.bean.User.hasPrivilegeByName(User.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)


如上红色部分所示:一个集合的的列懒加载失败:对应bean文件Role的privileges属性,所以运行到User.java:37行出错

解决办法:在hibernate的映射关系中由于延迟加载,之前的操作使session已经关闭,所以加载set属性时无可用session

在Role的映射文件中设置set属性 lazy='false'


0 0