zoukankan      html  css  js  c++  java
  • Hibernate的HQL多表查询

    HQL的内连接查询

      对于HQL内链接查询,查询的是两张表的数据,这两张表的数据首先是保存在数组之中,然后在将每一个数组保存在List集合之中进行返回

    代码片段:

     1 @Test
     2     // 内连接
     3     public void fun1() {
     4         SessionFactory factory = null;
     5         Session session = null;
     6         Transaction tx = null;
     7         try {
     8             factory = Tools.getSessionFactory();
     9             session = factory.openSession();
    10             tx = session.beginTransaction();
    11             // mans是Customer实体类的关联LinkMan实体类的一个集合属性
    12             Query query = session.createQuery("from Customer c inner join c.mans");
    13             List list = query.list();
    14             tx.commit();            
    15         } catch (Exception e) {
    16             tx.rollback();
    17             e.printStackTrace();
    18         } finally {
    19             session.close();
    20         }
    21     }
    View Code

    debug截图:

     HQL迫切内连接查询

      hql的迫切内连接查询,只需要将内连接查询加上一个fetch就行,如下:

    1 from Customer c inner join fetch c.mans

      迫切内连接和内连接的主要的区别是,内连接的List每部分是一个对象数组,而迫切内连接的List每部分返回的是一个对象。

    代码片段:

     1 @Test
     2     // 迫切内连接
     3     public void fun2() {
     4         SessionFactory factory = null;
     5         Session session = null;
     6         Transaction tx = null;
     7         try {
     8             factory = Tools.getSessionFactory();
     9             session = factory.openSession();
    10             tx = session.beginTransaction();
    11             // mans是Customer实体类的关联LinkMan实体类的一个集合属性
    12             Query query = session.createQuery("from Customer c inner join fetch c.mans");
    13             List list = query.list();
    14             tx.commit();            
    15         } catch (Exception e) {
    16             tx.rollback();
    17             e.printStackTrace();
    18         } finally {
    19             session.close();
    20         }
    21     }
    View Code

    Debug截图:

     

     HQL的左外连接

      左外连接的hql语句:

    1 from Customer c left outer join 关联另一个实体的属性

    代码片段:

     1 @Test
     2     // 左外连接
     3     public void fun3() {
     4         SessionFactory factory = null;
     5         Session session = null;
     6         Transaction tx = null;
     7         try {
     8             factory = Tools.getSessionFactory();
     9             session = factory.openSession();
    10             tx = session.beginTransaction();
    11             Query query = session.createQuery("from Customer c left outer join c.mans");
    12             List list = query.list();
    13             tx.commit();            
    14         } catch (Exception e) {
    15             tx.rollback();
    16             e.printStackTrace();
    17         } finally {
    18             session.close();
    19         }
    20     }
    View Code

    Debug截图:

     HQL的左外迫切连接

      迫切左外连接hql语句:

    from Customer c left outer join fetch 关联的另一个实体类在此类中的属性

    代码片段:

     1 @Test
     2     // 迫切左外连接
     3     public void fun4() {
     4         SessionFactory factory = null;
     5         Session session = null;
     6         Transaction tx = null;
     7         try {
     8             factory = Tools.getSessionFactory();
     9             session = factory.openSession();
    10             tx = session.beginTransaction();
    11             Query query = session.createQuery("from Customer c left outer join fetch c.mans");
    12             List list = query.list();
    13             tx.commit();            
    14         } catch (Exception e) {
    15             tx.rollback();
    16             e.printStackTrace();
    17         } finally {
    18             session.close();
    19         }
    20     }
    View Code

    Debug截图:

  • 相关阅读:
    《浅谈12306核心模型设计思路和架构设计》阅读笔记
    《一路打怪升级,360推荐系统架构演进》阅读笔记
    SOA架构设计的案例分析
    《苏宁易购:商品详情系统架构设计》阅读笔记
    《数据蜂巢架构演进之路》阅读笔记
    洛谷P1005 矩阵取数游戏
    LOJ#6277. 数列分块入门 1
    洛谷P1879 [USACO06NOV]玉米田Corn Fields
    洛谷P1072 Hankson 的趣味题
    洛谷P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
  • 原文地址:https://www.cnblogs.com/geore/p/7511933.html
Copyright © 2011-2022 走看看