java吧 关注:1,293,086贴子:12,827,050
  • 8回复贴,共1

求大神帮忙,先看问题,描述的应该清楚了

只看楼主收藏回复

假设两张表:
班级表:classId------className两个字段,
张学生表:stuId-----stuName-----classId三个字段,其中classId是班级表主键;
两个类:
StuClass:classId,className;
Student:stuId,stuName,StuClass stuclass;
现在hibernate查询学生列表,查出来List<Student> stuList = query.list();
最后,关闭session;
现在获取stuList 列表信息:
stuList.get(0).getStuId,没问题;
stuList.get(0).getSutclass.getClassname;报错;
为什么


IP属地:福建1楼2013-10-17 14:40回复
    如果在session关闭前取stuList.get(0).getSutclass.getClassname是可以的,为什么


    IP属地:福建2楼2013-10-17 14:45
    回复
      2025-12-30 23:54:34
      广告
      不感兴趣
      开通SVIP免广告
      很久没用hibernate了,凭印象说一点.
      查stuList时就等于运行了select * from student,然后把信息缓存下来,getStuId时实际是取缓存里的.
      getsubclass.getclassname时,实际上是需要做一次关联查询,因为这时候缓存里没有classname的信息(第一遍查时只查了关联的classid).而你这时候session又是关的,不能再重新发起查询,就报错了.


      IP属地:福建3楼2013-10-17 15:22
      收起回复
        java吧大神门


        IP属地:福建4楼2013-10-17 16:43
        回复
          如果在session关闭前,遍历一次 getsubclass.getclassname,就可以直接获取classname了,我想问有什么办法设置一下不用遍历就能获取


          IP属地:福建5楼2013-10-17 16:43
          回复