HQL多表查询
来源:互联网 发布:劫持软件 编辑:程序博客网 时间:2024/05/22 09:48
------------------siwuxie095
HQL 多表查询
以客户和联系人为例(一对多)
1、内连接
(1)hql 语句写法
from Customer c inner join c.linkManSet
(2)具体实现
/*
* (1)创建 Query对象
*
*调用 session的 createQuery()方法,参数是 hql
*语句,返回值是 Query类型,创建以接收
*/
Query query=session.createQuery("from Customer c inner join c.linkManSet");
/*
* (2)调用方法得到结果
*
*调用 query的 list()方法,返回值是 List类型,
*创建以接收
*
*注意:此时返回的 List的每部分都是一个数组,而
*不是 Customer对象或 LinkMan 对象,所以指定泛
*型为 Object[]
*/
List<Object[]> list=query.list();
for (Object[] obj : list) {
Customer customer=(Customer) obj[0];
LinkMan linkMan=(LinkMan) obj[1];
System.out.println(customer.getCustName()+"-"+linkMan.getLkmName());
}
(3)返回的List 中,每部分都是一个数组
2、迫切内连接
(1)迫切内连接 和 内连接 的底层实现(即 sql 语句)都一样
(2)区别:
1)内连接返回的List 中,每部分都是一个数组
2)迫切内连接返回的List 中,每部分都是一个对象
(3)hql 语句写法
from Customer c inner join fetch c.linkManSet
(4)具体实现
/*
* (1)创建 Query对象
*
*调用 session的 createQuery()方法,参数是 hql
*语句,返回值是 Query类型,创建以接收
*/
Query query=session.createQuery("from Customer c inner join fetch c.linkManSet");
/*
* (2)调用方法得到结果
*
*调用 query的 list()方法,返回值是 List类型,
*创建以接收
*
*注意:此时返回的 List的每部分都是一个 Customer
*对象
*/
List<Customer> list=query.list();
for (Customer cust : list) {
System.out.println(cust.getCustName()+"-"+cust.getLinkManSet().size());
}
3、左外连接
(1)hql 语句写法
from Customer c left outer join c.linkManSet
(2)左外连接返回的List 中,每部分都是一个数组
4、迫切左外连接
(1)hql 语句写法
from Customer c left outer join fetch c.linkManSet
(2)迫切左外连接返回的List 中,每部分都是一个对象
5、右外连接
(1)hql 语句
from Customer cright outer join c.linkManSet
(2)右外连接返回的List 中,每部分都是一个数组
「注意:没有迫切右外连接」
【made by siwuxie095】
- hql 多表查询
- hql多表查询
- HQL多表查询
- HQL多表查询
- HQL多表查询
- HQL多表查询
- HQL多表查询
- HQL的多表查询
- hql 多表连接查询
- HQL的多表查询
- hibernate多表查询HQL
- hibernate多表查询HQL
- HQL查询多表数据
- HQL语句多表查询
- hql多表联合查询
- hibernate多表查询HQL
- hql多表关联查询
- hibernate多表查询HQL
- Linux_系统故障分析
- arcgis for javascript 表格与要素联动
- python把生成的图像文本列表加标签
- 常用光照计算算法
- Python--pip使用代理
- HQL多表查询
- c++将构造与非成员函数虚化的方法
- 面向对象设计原则(五):依赖倒置原则(DIP)
- 老版VC++线程池
- java编程思想笔记-并发之并发锁(一)
- 浅谈Nginx与Apache的区别
- 51nod 1031 骨牌覆盖 斐波那契数列
- Linux_selinux
- SVM原理详解