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条数据,但是为什么会有很多重复的数据?因为是封装的问题。
最新文章
- python向数据库插入数据时出现乱码解决方案
- C# 委托和事件(二):使用.Net框架中的EventArgs和EventHandler
- copy 和 strong(或retain)的区别
- Bootstrap3.0学习第十五轮(大屏幕介绍、页面标题、缩略图、警示框、Well)
- p188习题2
- Using pg_dump restore dump file on Odoo
- JavaWeb学习总结(十五)--过滤器的应用
- 济南学习 Day 3 T2 pm
- MySQL中的datetime与timestamp比较
- python学习第十六天 --继承进阶篇
- Struts2 文件的上传与下载
- 解读python中SocketServer源码
- dotweb框架之旅 [四] - 常用对象-HttpContext
- MyBatis笔记03
- 程序员十大热门flag,有你的吗?
- 《内蒙古自治区第十三届大学生程序设计竞赛试题_H 公孙玉龙》
- C# linq操作是否延迟对照表
- centos7搭建时间服务器
- IE在开发工具启动的情况下(打开F12)时 JS才能执行
- ♣eclipse护眼颜色和关键字颜色设置