zoukankan      html  css  js  c++  java
  • day36 04-Hibernate检索方式:多表连接查询

    返回的是一个List集合,这个List集合的泛型是一个Object数组。最后会拿到一个里面放Object数组的List集合。


    HQL内连接查询,发出SQL语句查询出来的结果集被Hibernate封装成Object数组(Object[])的集合。所以不会产生重复数据。但是必须得是主表对应的类Customer的toString()方法打印出Order,而从表对应的类Order不打印customer对象。

    Query query = session.createQuery("from Customer c inner join c.orders");//Query接口

      List<Object[]> list  = query.list();
      for (Object[] objects : list) {
       System.out.println(Arrays.toString(objects));
      }


    Query query = session.createQuery("from Customer c  inner join fetch c.orders");//Query接口

    List<Customer> list = query.list();
    for (Customer customer : list) {//关联查询的时候会得到多少条记录?
    System.out.println(customer);//两个表的关联查询,内连接查询会得到30条记录
    //为什么会有重复的数据?因为这是封装的问题
    }

    Query query = session.createQuery("from Customer c  inner join fetch c.orders");//Query接口

    List<Customer> list = query.list();
    for (Customer customer : list) {//关联查询的时候会得到多少条记录?
    System.out.println(customer);//两个表的关联查询,内连接查询会得到30条记录
    //为什么会有重复的数据?因为这是封装的问题
    }

    Query query = session.createQuery("select distinct c from Customer c  inner join fetch c.orders");

    List<Customer> list = query.list();
    for (Customer customer : list) {//关联查询的时候会得到多少条记录?
    System.out.println(customer);//两个表的关联查询,内连接查询会得到30条记录
    //为什么会有重复的数据?因为这是封装的问题
    }

    Query query = session.createQuery("select distinct c from Customer c  inner join fetch c.orders");//Query接口

    List<Customer> list = query.list();
    for (Customer customer : list) {//关联查询的时候会得到多少条记录?
    System.out.println(customer);//两个表的关联查询,内连接查询会得到30条记录
    //为什么会有重复的数据?因为这是封装的问题
    }


    Query query = session.createQuery("from Order o inner join o.customer");//Query接口

      List<Object[]> list  = query.list();
      for (Object[] objects : list) {
       System.out.println(Arrays.toString(objects));
      }

     

    Query query = session.createQuery("from Order o  inner join fetch o.customer");//Query接口

    List<Order> list = query.list();
            for (Order order : list) {
       System.out.println(order);
      }

    Query query = session.createQuery("select distinct o from Order o  inner join fetch o.customer");//Query接口

    List<Order> list = query.list();
    for (Order order : list) {
    System.out.println(order);
    }


    迫切内连接查出来的也是30条数据,但是为什么会有很多重复的数据?因为是封装的问题。

  • 相关阅读:
    《Programming WPF》翻译 第6章 3.二进制资源
    《Programming WPF》翻译 第5章 前言
    谈谈粒子系统
    GameFramework的初步设计
    引擎层次化设计
    关于HeapCreate(1)
    新的引擎ZeusEngine
    最短路径算法介绍
    Max导出插件
    游戏中的光影效果
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/6697380.html
Copyright © 2011-2022 走看看