zoukankan      html  css  js  c++  java
  • failed to lazily initialize a collection of role: could not initialize proxy

    在hibernate映射关联时

      有类似下面的注解 

    @OneToMany(mappedBy = "appEntity",fetch = FetchType.LAZY) 其中 fetch = FetchType.LAZY表示懒加载。

    private Set<ProductEntity> productEntities;

    结果在运行时遇到下面的错误:

         failed to lazily initialize a collection of role: could not initialize proxy - no Session。

      运行代码如下:

     public List<AppEntity> getAppListWithPageKeyword(int page,int step, String keyword){

        Session session = HBSession.getSession();
    String hql = "from com.wawagame.backend.trade.hbentity.AppEntity as app where app.appName like :appName";
    Query query = session.createQuery(hql);
    query.setString("appName","%" + keyword + "%");
    query.setFirstResult((page - 1) * step);
    query.setMaxResults(step);
    List<AppEntity> list = query.list()
    session.close();
    return list;
    }
    pulic static void mian(String args){
      List<AppEntity> appEntity = getAppListWithPageKeyWord(1,10,"");
      System.out.println(
    list.get(0).getProductEntities());
    }
    原因是在在懒加载是session关闭和数据库的链接关闭了。
    解决办法:
      1、fetch = FetchType.LAZY 在成 fetch = FetchType.
    EAGER 一次讲所有数据查询出来
      2、在session关闭之前获取如

    List<AppEntity> list = query.list()
    System.out.println(list.get(0).getProductEntities());
    session.close()
     
    
    


     

          

  • 相关阅读:
    系统综合实践第三次作业
    系统综合实践第二次作业
    系统综合实践第一次作业
    第03组 Beta版本演示
    第03组 Beta冲刺(4/4)
    第04组 Beta版本演示
    第04组 Beta冲刺(4/4)
    第04组 Beta冲刺(3/4)
    第04组 Beta冲刺(2/4)
    第04组 Beta冲刺(1/4)
  • 原文地址:https://www.cnblogs.com/sy-liu/p/6913576.html
Copyright © 2011-2022 走看看