org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.zznode.inms.pdm.data.ProjectBatchUpdateTask.devicePrjChangeTasks, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
at org.hibernate.collection.PersistentSet.size(PersistentSet.java:114)
原因:在hibernate的映射关系中由于延迟加载,之前的操作使session已经关闭,所以加载set属性时无可用session
解决办法:在映射文件中设置set属性 lazy='false'
<set name="devicePrjChangeTasks" lazy="false" cascade="delete" inverse="true">
<!-- 主键对应的关联表外键 -->
<key column="prj_update_task_id"></key>
<!-- 关联表 -->
<one-to-many class="com.zznode.inms.pdm.data.ProjectUpdateTemp"/>
</set>