day36 04-Hibernate检索方式:多表连接查询_数组

day36 04-Hibernate检索方式:多表连接查询_数据_02

day36 04-Hibernate检索方式:多表连接查询_数据_03

day36 04-Hibernate检索方式:多表连接查询_连接查询_04

day36 04-Hibernate检索方式:多表连接查询_数组_05

day36 04-Hibernate检索方式:多表连接查询_封装_06

day36 04-Hibernate检索方式:多表连接查询_连接查询_07

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

day36 04-Hibernate检索方式:多表连接查询_数组_08

day36 04-Hibernate检索方式:多表连接查询_数据_09


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));
  }

day36 04-Hibernate检索方式:多表连接查询_关联查询_10


 

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条记录
//为什么会有重复的数据?因为这是封装的问题
}

day36 04-Hibernate检索方式:多表连接查询_数组_11

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条记录
//为什么会有重复的数据?因为这是封装的问题
}

day36 04-Hibernate检索方式:多表连接查询_连接查询_12

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条记录
//为什么会有重复的数据?因为这是封装的问题
}

day36 04-Hibernate检索方式:多表连接查询_连接查询_13

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条记录
//为什么会有重复的数据?因为这是封装的问题
}

day36 04-Hibernate检索方式:多表连接查询_数据_14


 

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));
  }

day36 04-Hibernate检索方式:多表连接查询_连接查询_15 

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);
  }

day36 04-Hibernate检索方式:多表连接查询_数据_16

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);
}

day36 04-Hibernate检索方式:多表连接查询_数组_17


 

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

day36 04-Hibernate检索方式:多表连接查询_数据_18

day36 04-Hibernate检索方式:多表连接查询_封装_19

day36 04-Hibernate检索方式:多表连接查询_关联查询_20

day36 04-Hibernate检索方式:多表连接查询_数据_21

day36 04-Hibernate检索方式:多表连接查询_数据_22

day36 04-Hibernate检索方式:多表连接查询_连接查询_23

day36 04-Hibernate检索方式:多表连接查询_封装_24

day36 04-Hibernate检索方式:多表连接查询_封装_25

day36 04-Hibernate检索方式:多表连接查询_封装_26