zoukankan      html  css  js  c++  java
  • Hibernate加载数据失败failed to lazily initialize a collection of role

    在测试获取数据库中的数据或者在页面获取时,有时会遇到这样的错误提示:

    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>
  • 相关阅读:
    Java基础教程(20)--数字和字符串
    Java基础教程(19)--Object类
    python 选择和循环结构
    购物清单
    第五次安卓作业(计算器和增删改查)
    第四次安卓作业(用户添加)
    第三次安卓作业(用户登录)
    第二次安卓作业(九宫格)
    5.22作业
    5.29作业
  • 原文地址:https://www.cnblogs.com/huangyibo/p/3825700.html
Copyright © 2011-2022 走看看