您的位置:首页 > 大数据 > 人工智能

Hibernate加载数据失败failed to lazily initialize a collection of role

2014-07-05 13:57 555 查看
在测试获取数据库中的数据或者在页面获取时,有时会遇到这样的错误提示:

failed to lazily initialize a collection of role: com.exam.entity.Question.questionAnswer, no session or session was closed


其中com.exam.entity.Question.questionAnswer为错误的相关类名,根据实际情况而定。

从错误的字面意思可以发现是延迟加载初始化时遇到了问题。

从错误的提示相关类com.exam.entity.Question.questionAnswer不难看出是Question中的questionAnswer加载失败了。

找到相关的Hibernate映射文件可以发现:

Question映射文件中的questionAnswer

<set name="questionAnswer" inverse="true" cascade="delete">
<key column="question_no"/>
<one-to-many class="QuestionAnswer"/>
</set>


该映射并没有设置lazy,所以这里是使用了默认的lazy=”true”,所以导致在页面获取时,因为session已经关闭,所以获取不到questionAnswer的数据。

所以为了解决这个问题,可以在set的lazy设置为false:

为set设置lazy="false"

<set name="questionAnswer" inverse="true" cascade="delete" lazy="false">
<key column="question_no"/>
<one-to-many class="QuestionAnswer"/>
</set>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐