• 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()
     
    
    


     

          

  • 相关阅读:
    streamreader
    python编码问题总结
    linux rz上传文件及出错解决方案
    使用linux远程登录另一台linux
    利用Django实现RESTful API(一)
    windows下搭建vue开发环境
    windows下python虚拟环境virtualenv安装和使用
    SonarQube的安装、配置与使用
    windows下安装Mysql(图文详解)
    静态代码分析工具sonarqube+sonar-runner的安装配置及使用
  • 原文地址:https://www.cnblogs.com/sy-liu/p/6913576.html
Copyright © 2020-2023  润新知