唉~~!堂堂的CSDN竟然这点问题都解决不了!

解决方案 »

  1.   

    你可以试着让 Hibernate 打印出实际执行的 SQL 语句看看是怎么回事儿。从报错信息上看,好像 Student.courses 并没有真的按期望的那样加载进来。印象里有“一次查询最多有一个 LEFT OUTER JOIN”的说法……
      

  2.   

    你这个问题是因为延迟加载造成的,你延迟取数据,但是那个时候session已经关闭,所以报错
    2种解决办法:
    1.取消延迟加载
    2.在延迟加载后在关闭session.还有..songergjl 
     
    等 级:
     发表于:2007-12-19 13:31:281楼 得分:0 
    唉~~!堂堂的CSDN竟然这点问题都解决不了! 
     看了很反感,本来不想回贴的.做人要厚道!!
      

  3.   

    在fetch之前你的session已经结束了。我刚学hibernate时也遇到过类似的问题。因为在实际应用中你没有考虑到什么时候会对数据库查询你写的那句hql/sql,所以用可能在你点击“确定”(或其他类似的)时已经执行了session.close()了。如果你用的是MyEclipse自动生成的代码,那么可能是你的StudentDAO和CourseDAO的问题(如果用了DAO模式).从你的错误信息中看,你把hibnate操作直接放在了tag里。这样做不好,容易造成代码混乱。
      

  4.   

     no   session   or   session   was   closed ,lazy="true" ,级联要将lazy="false"
    试下吧
      

  5.   

    给你一个例子
    session.beginTransaction();
    Query query=session.createQuery(str);
    list=query.list();
    Iterator iterator=list.iterator();
    while(iterator.hasNext()){
    Obj_consignBill bill=(Obj_consignBill)iterator.next();
    if(!Hibernate.isInitialized(bill.getBillID())){
    session.refresh(bill);
    Hibernate.initialize(bill.getBillID());
    }
    }
    session.getTransaction().commit();其中bill.getBillID就是set型的,以上这个方法是当lazy=true的时候用来获得所关联数据的方法
      

  6.   

    建议你可以采用open Session in View这种模式。通过Spring可以很好的管理session问题。只有配置好事务 性能还是比较不错的顺便推荐一个web操作系统,做的比较不错。就是Spring+Hibernate+Webwork+ajax开发的。http://www.epopos.cn
      

  7.   

    可以有2种方法
    1、设置lazy = false
    2、如果你既想在session关闭后又想使用延迟加载,就使用hibernate.initialize(实例对象);