返回的是一个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条数据,但是为什么会有很多重复的数据?因为是封装的问题。