[Hibernate] inner Join和 left Join
@Test
public void test11(){
Session ss=HibernateUtil.getSession();
//根据员工名称(SCOTT)找到和他所在的部门的其他员工的信息
String hql=" select e from Emp e inner join e.dept";//下面一条等效
//String hql="from Emp e inner join fetch e.dept";
Query qr=ss.createQuery(hql);
List<Emp> el =qr.list();
System.out.println(el.size());
for (Emp emp : el) {
System.out.println(emp);
}
HibernateUtil.closeResource(ss);
}
inner join代码
inner join输出27条结果,但是分块输出,条件查询也执行了几次.
Hibernate:
select
emp0_.empno as empno1_1_,
emp0_.ename as ename2_1_,
emp0_.job as job3_1_,
emp0_.mgr as mgr4_1_,
emp0_.hiredate as hiredate5_1_,
emp0_.sal as sal6_1_,
emp0_.comm as comm7_1_,
emp0_.deptno as deptno8_1_
from
EMP2 emp0_
inner join
DEPT2 dept1_
on emp0_.deptno=dept1_.deptno
24
Hibernate:
select
dept0_.deptno as deptno1_0_0_,
dept0_.dname as dname2_0_0_,
dept0_.loc as loc3_0_0_
from
DEPT2 dept0_
where
dept0_.deptno=?
Emp [empNo=7369, eName=SMITH, job=CLERK, mgr=7902, hireDate=1980-12-17 00:00:00.0, sal=800.0, comm=null, dept=Dept [deptNo=20, dName=RESEARCH, loc=DALLAS]]
Hibernate:
select
dept0_.deptno as deptno1_0_0_,
dept0_.dname as dname2_0_0_,
dept0_.loc as loc3_0_0_
from
DEPT2 dept0_
where
dept0_.deptno=?
Emp [empNo=7499, eName=ALLEN, job=SALESMAN, mgr=7698, hireDate=1981-02-20 00:00:00.0, sal=1600.0, comm=300.0, dept=Dept [deptNo=30, dName=SALES, loc=CHICAGO]]
Emp [empNo=7521, eName=WARD, job=SALESMAN, mgr=7698, hireDate=1981-02-22 00:00:00.0, sal=1250.0, comm=500.0, dept=Dept [deptNo=30, dName=SALES, loc=CHICAGO]]
Emp [empNo=7566, eName=JONES, job=MANAGER, mgr=7839, hireDate=1981-04-02 00:00:00.0, sal=2975.0, comm=null, dept=Dept [deptNo=20, dName=RESEARCH, loc=DALLAS]]
Emp [empNo=7654, eName=MARTIN, job=SALESMAN, mgr=7698, hireDate=1981-09-28 00:00:00.0, sal=1250.0, comm=1400.0, dept=Dept [deptNo=30, dName=SALES, loc=CHICAGO]]
Emp [empNo=7698, eName=BLAKE, job=MANAGER, mgr=7839, hireDate=1981-05-01 00:00:00.0, sal=2850.0, comm=null, dept=Dept [deptNo=30, dName=SALES, loc=CHICAGO]]
Hibernate:
select
dept0_.deptno as deptno1_0_0_,
dept0_.dname as dname2_0_0_,
dept0_.loc as loc3_0_0_
from
DEPT2 dept0_
where
dept0_.deptno=?
Emp [empNo=7782, eName=CLARK, job=MANAGER, mgr=7839, hireDate=1981-06-09 00:00:00.0, sal=2450.0, comm=null, dept=Dept [deptNo=10, dName=ACCOUNTING, loc=NEW YORK
]]
Emp [empNo=7788, eName=SCOTT, job=ANALYST, mgr=7566, hireDate=1987-04-19 00:00:00.0, sal=3000.0, comm=null, dept=Dept [deptNo=20, dName=RESEARCH, loc=DALLAS]]
Emp [empNo=7839, eName=KING, job=PRESIDENT, mgr=null, hireDate=1981-11-17 00:00:00.0, sal=5000.0, comm=null, dept=Dept [deptNo=10, dName=ACCOUNTING, loc=NEW YOR
K]]
Emp [empNo=7844, eName=TURNER, job=SALESMAN, mgr=7698, hireDate=1981-09-08 00:00:00.0, sal=1500.0, comm=0.0, dept=Dept [deptNo=30, dName=SALES, loc=CHICAGO]]
Emp [empNo=7876, eName=ADAMS, job=CLERK, mgr=7788, hireDate=1987-05-23 00:00:00.0, sal=1100.0, comm=null, dept=Dept [deptNo=20, dName=RESEARCH, loc=DALLAS]]
Emp [empNo=7900, eName=JAMES, job=CLERK, mgr=7698, hireDate=1981-12-03 00:00:00.0, sal=950.0, comm=null, dept=Dept [deptNo=30, dName=SALES, loc=CHICAGO]]
Emp [empNo=7902, eName=FORD, job=ANALYST, mgr=7566, hireDate=1981-12-03 00:00:00.0, sal=3000.0, comm=null, dept=Dept [deptNo=20, dName=RESEARCH, loc=DALLAS]]
Emp [empNo=7934, eName=MILLER, job=CLERK, mgr=7782, hireDate=1982-01-23 00:00:00.0, sal=1300.0, comm=null, dept=Dept [deptNo=10, dName=ACCOUNTING, loc=NEW YORK]
]
Hibernate:
select
dept0_.deptno as deptno1_0_0_,
dept0_.dname as dname2_0_0_,
dept0_.loc as loc3_0_0_
from
DEPT2 dept0_
where
dept0_.deptno=?
Emp [empNo=67, eName=瑞士队, job=MANAGER, mgr=2018, hireDate=2018-06-21 21:37:53.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=64, dName=WorldCup, loc=Moscow]]
Emp [empNo=19, eName=韩国队, job=MANAGER, mgr=7788, hireDate=2018-06-12 00:00:00.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=20, dName=RESEARCH, loc=DALLAS]]
Hibernate:
select
dept0_.deptno as deptno1_0_0_,
dept0_.dname as dname2_0_0_,
dept0_.loc as loc3_0_0_
from
DEPT2 dept0_
where
dept0_.deptno=?
Emp [empNo=13, eName=InverseT, job=TEST, mgr=7788, hireDate=2018-06-28 11:16:49.0, sal=1000.0, comm=100.0, dept=Dept [deptNo=86, dName=HBM, loc=Diego]]
Hibernate:
select
dept0_.deptno as deptno1_0_0_,
dept0_.dname as dname2_0_0_,
dept0_.loc as loc3_0_0_
from
DEPT2 dept0_
where
dept0_.deptno=?
Emp [empNo=88, eName=Poly, job=Athlete, mgr=7788, hireDate=2018-06-28 10:21:47.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=90, dName=FOOTBALL, loc=Seattle]]
Emp [empNo=89, eName=Odin, job=Athlete, mgr=7788, hireDate=2018-06-28 10:21:47.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=90, dName=FOOTBALL, loc=Seattle]]
Hibernate:
select
dept0_.deptno as deptno1_0_0_,
dept0_.dname as dname2_0_0_,
dept0_.loc as loc3_0_0_
from
DEPT2 dept0_
where
dept0_.deptno=?
Emp [empNo=83, eName=SET, job=主播, mgr=7788, hireDate=2018-06-28 10:08:45.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=81, dName=BigDept, loc=NEWYORK]]
Emp [empNo=87, eName=InverseF, job=TEST, mgr=7788, hireDate=2018-06-28 10:18:08.0, sal=1000.0, comm=100.0, dept=Dept [deptNo=86, dName=HBM, loc=Diego]]
Hibernate:
select
dept0_.deptno as deptno1_0_0_,
dept0_.dname as dname2_0_0_,
dept0_.loc as loc3_0_0_
from
DEPT2 dept0_
where
dept0_.deptno=?
Emp [empNo=16, eName=TOM, job=CODER, mgr=7788, hireDate=2018-06-28 11:18:18.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=17, dName=VR, loc=Phoenix]]
Emp [empNo=63, eName=德国队, job=MANAGER, mgr=7788, hireDate=2018-06-21 21:24:37.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=64, dName=WorldCup, loc=Moscow]]
Hibernate:
select
dept0_.deptno as deptno1_0_0_,
dept0_.dname as dname2_0_0_,
dept0_.loc as loc3_0_0_
from
DEPT2 dept0_
where
dept0_.deptno=?
Emp [empNo=110, eName=Police, job=Police, mgr=110, hireDate=2001-09-09 09:46:40.0, sal=4000.0, comm=800.0, dept=Dept [deptNo=5, dName=DeptX, loc=null]]
inner Join输出结果
//left join
@Test
public void test12(){
Session ss=HibernateUtil.getSession();
//根据员工名称(SCOTT)找到和他所在的部门的其他员工的信息
//String hql="from Emp e left outer join e.dept on e.deptNo=e.dept.deptNo";//获取Emp+Dept的集合
//String hql="select e from Emp e left outer join e.dept on e.deptNo=e.dept.deptNo";//获取Emp
//以上两个个需要deptNo属性,在配置文件中配置property和Emp类中生成相应的getter setter
String hql="from Emp e left outer join fetch e.dept ";//获取Emp
Query qr=ss.createQuery(hql); List<Emp> el =qr.list();
System.out.println(el.size());
for (Emp emp : el) {
System.out.println(emp);
}
HibernateUtil.closeResource(ss);
}
left join
Hibernate:
select
emp0_.empno as empno1_1_0_,
dept1_.deptno as deptno1_0_1_,
emp0_.ename as ename2_1_0_,
emp0_.job as job3_1_0_,
emp0_.mgr as mgr4_1_0_,
emp0_.hiredate as hiredate5_1_0_,
emp0_.sal as sal6_1_0_,
emp0_.comm as comm7_1_0_,
emp0_.deptno as deptno8_1_0_,
dept1_.dname as dname2_0_1_,
dept1_.loc as loc3_0_1_
from
EMP2 emp0_
left outer join
DEPT2 dept1_
on emp0_.deptno=dept1_.deptno
27
Emp [empNo=7934, eName=MILLER, job=CLERK, mgr=7782, hireDate=1982-01-23 00:00:00.0, sal=1300.0, comm=null, dept=Dept [deptNo=10, dName=ACCOUNTING, loc=NEW YORK]
]
Emp [empNo=7839, eName=KING, job=PRESIDENT, mgr=null, hireDate=1981-11-17 00:00:00.0, sal=5000.0, comm=null, dept=Dept [deptNo=10, dName=ACCOUNTING, loc=NEW YOR
K]]
Emp [empNo=7782, eName=CLARK, job=MANAGER, mgr=7839, hireDate=1981-06-09 00:00:00.0, sal=2450.0, comm=null, dept=Dept [deptNo=10, dName=ACCOUNTING, loc=NEW YORK
]]
Emp [empNo=19, eName=韩国队, job=MANAGER, mgr=7788, hireDate=2018-06-12 00:00:00.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=20, dName=RESEARCH, loc=DALLAS]]
Emp [empNo=7902, eName=FORD, job=ANALYST, mgr=7566, hireDate=1981-12-03 00:00:00.0, sal=3000.0, comm=null, dept=Dept [deptNo=20, dName=RESEARCH, loc=DALLAS]]
Emp [empNo=7876, eName=ADAMS, job=CLERK, mgr=7788, hireDate=1987-05-23 00:00:00.0, sal=1100.0, comm=null, dept=Dept [deptNo=20, dName=RESEARCH, loc=DALLAS]]
Emp [empNo=7788, eName=SCOTT, job=ANALYST, mgr=7566, hireDate=1987-04-19 00:00:00.0, sal=3000.0, comm=null, dept=Dept [deptNo=20, dName=RESEARCH, loc=DALLAS]]
Emp [empNo=7566, eName=JONES, job=MANAGER, mgr=7839, hireDate=1981-04-02 00:00:00.0, sal=2975.0, comm=null, dept=Dept [deptNo=20, dName=RESEARCH, loc=DALLAS]]
Emp [empNo=7369, eName=SMITH, job=CLERK, mgr=7902, hireDate=1980-12-17 00:00:00.0, sal=800.0, comm=null, dept=Dept [deptNo=20, dName=RESEARCH, loc=DALLAS]]
Emp [empNo=7900, eName=JAMES, job=CLERK, mgr=7698, hireDate=1981-12-03 00:00:00.0, sal=950.0, comm=null, dept=Dept [deptNo=30, dName=SALES, loc=CHICAGO]]
Emp [empNo=7844, eName=TURNER, job=SALESMAN, mgr=7698, hireDate=1981-09-08 00:00:00.0, sal=1500.0, comm=0.0, dept=Dept [deptNo=30, dName=SALES, loc=CHICAGO]]
Emp [empNo=7698, eName=BLAKE, job=MANAGER, mgr=7839, hireDate=1981-05-01 00:00:00.0, sal=2850.0, comm=null, dept=Dept [deptNo=30, dName=SALES, loc=CHICAGO]]
Emp [empNo=7654, eName=MARTIN, job=SALESMAN, mgr=7698, hireDate=1981-09-28 00:00:00.0, sal=1250.0, comm=1400.0, dept=Dept [deptNo=30, dName=SALES, loc=CHICAGO]]
Emp [empNo=7521, eName=WARD, job=SALESMAN, mgr=7698, hireDate=1981-02-22 00:00:00.0, sal=1250.0, comm=500.0, dept=Dept [deptNo=30, dName=SALES, loc=CHICAGO]]
Emp [empNo=7499, eName=ALLEN, job=SALESMAN, mgr=7698, hireDate=1981-02-20 00:00:00.0, sal=1600.0, comm=300.0, dept=Dept [deptNo=30, dName=SALES, loc=CHICAGO]]
Emp [empNo=110, eName=Police, job=Police, mgr=110, hireDate=2001-09-09 09:46:40.0, sal=4000.0, comm=800.0, dept=Dept [deptNo=5, dName=DeptX, loc=null]]
Emp [empNo=89, eName=Odin, job=Athlete, mgr=7788, hireDate=2018-06-28 10:21:47.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=90, dName=FOOTBALL, loc=Seattle]]
Emp [empNo=88, eName=Poly, job=Athlete, mgr=7788, hireDate=2018-06-28 10:21:47.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=90, dName=FOOTBALL, loc=Seattle]]
Emp [empNo=87, eName=InverseF, job=TEST, mgr=7788, hireDate=2018-06-28 10:18:08.0, sal=1000.0, comm=100.0, dept=Dept [deptNo=86, dName=HBM, loc=Diego]]
Emp [empNo=13, eName=InverseT, job=TEST, mgr=7788, hireDate=2018-06-28 11:16:49.0, sal=1000.0, comm=100.0, dept=Dept [deptNo=86, dName=HBM, loc=Diego]]
Emp [empNo=63, eName=德国队, job=MANAGER, mgr=7788, hireDate=2018-06-21 21:24:37.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=64, dName=WorldCup, loc=Moscow]]
Emp [empNo=67, eName=瑞士队, job=MANAGER, mgr=2018, hireDate=2018-06-21 21:37:53.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=64, dName=WorldCup, loc=Moscow]]
Emp [empNo=83, eName=SET, job=主播, mgr=7788, hireDate=2018-06-28 10:08:45.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=81, dName=BigDept, loc=NEWYORK]]
Emp [empNo=16, eName=TOM, job=CODER, mgr=7788, hireDate=2018-06-28 11:18:18.0, sal=3000.0, comm=100.0, dept=Dept [deptNo=17, dName=VR, loc=Phoenix]]
Emp [empNo=18, eName=吴奇隆, job=ACTOR, mgr=7788, hireDate=2018-06-20 00:00:00.0, sal=4000.0, comm=1000.0, dept=null]
Emp [empNo=11, eName=JASON, job=CODER, mgr=7788, hireDate=2018-06-28 11:14:47.0, sal=3000.0, comm=100.0, dept=null]
Emp [empNo=5, eName=YaoMing, job=Athlete, mgr=7788, hireDate=2018-06-28 11:08:59.0, sal=3000.0, comm=100.0, dept=null]
left join 输出结果
[Hibernate] inner Join和 left Join的更多相关文章
- Hibernate中,left join、inner join以及left join fetch区别(转)
标签: hibernate hql inner join left right 杂谈 分类: SQL 原文地址:http://m33707.iteye.com/blog/829725 Select F ...
- mysql join 和left join 对于索引的问题
今天遇到一个left join优化的问题,搞了一下午,中间查了不少资料,对MySQL的查询计划还有查询优化有了更进一步的了解,做一个简单的记录: select c.* from hotel_info_ ...
- 【转】mysql的union、left join、 right join、 inner join和视图学习
1.联合 union 进行多个查询语句时,要求多次查询的结果列数必须一样.此时,查询的结果以第一个sql语句的列名为准且union会自动去重复我们应该使用union all. 例...... 1.联合 ...
- SQL Left Join, Right Join, Inner Join, and Natural Join 各种Join小结
在SQL语言中,存在着各种Join,有Left Join, Right Join, Inner Join, and Natural Join等,对于初学者来说肯定一头雾水,都是神马跟神马啊,它们之间到 ...
- sql语法:inner join on, left join on, right join on详细使用方法
inner join(等值连接) 只返回两个表中联结字段相等的行 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有 ...
- sql之left join、right join、inner join的区别
sql之left join.right join.inner join的区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括 ...
- SQL中inner join、outer join和cross join的区别
对于SQL中inner join.outer join和cross join的区别简介:现有两张表,Table A 是左边的表.Table B 是右边的表.其各有四条记录,其中有两条记录name是相同 ...
- SQL JOIN\SQL INNER JOIN 关键字\SQL LEFT JOIN 关键字\SQL RIGHT JOIN 关键字\SQL FULL JOIN 关键字
SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据. Join 和 Key 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果.我们就需要执行 join. 数据库中的表 ...
- SQL表连接查询(inner join、full join、left join、right join)
SQL表连接查询(inner join.full join.left join.right join) 前提条件:假设有两个表,一个是学生表,一个是学生成绩表. 表的数据有: 一.内连接-inner ...
随机推荐
- 代码块事务—TransactionScope
今天上班遇到这样的业务:将删除的用户信息记录到记录表,再删除用户表中的信息. 可以说是不幸也可以说是幸运的. 在以往遇到这样的业务,我会考虑到各种出现异常或者失败的情况.在删除一张表数据失败的情况,对 ...
- js之常见问题--for循环中为什么点击总是弹出最后一个i
首先看看点击不同li标签时,弹出li的索引值对应的结果 HTML: <ul> <li>0</li> <li>2</li> <li> ...
- 审核被拒:1. 1 Safety: Objectionable Content ;3. 1.1 Business: Payments - In-App Purchase ;4. 3 Design: Spam ;5. 1.1 Legal: Privacy - Data Collection and Storage
1. 1 Safety: Objectionable Content 有人民币符号—隐藏收费课程 3. 1.1 Business: Payments ...
- 内置委托func
1.p=>p.CTName,其中p是此委托入参,p.CTName是返回值 2. 3.调用委托的方法
- 初学Vue 遇到Module not found:Error:Can`t resolve 'less-loader' 问题
学习vue时,导入一个子组件时遇到Module not found:Error:Can`t resolve 'less-loader' 问题,实际上时在子组件中的样式里加了这么个代码 <styl ...
- 分布式异步任务Celery
-A代表APP celery -A tasks worker --loglevel=info -n nodemaster -------------- celery@nodemaster v4.1.0 ...
- jmeter二次开发之java请求
现在很多公司都用的是微服务,每个服务的请求协议有可能不相同,怎样用jmeter二次开发自己的java请求? 下面是具体的开发步骤: 1,把需要的jar包 添加到maven依赖中 jmeter中java ...
- Cocos Creator两个类相互引用(调用)
如果两个类相互引用,脚本加载阶段就会出现循环引用,循环引用将导致脚本加载出错:///////////Game.jsvar Item = require("Item");var Ga ...
- form提交xml文件
--为何ajax提交不了xml?--原因:Request.Form["Data"]这种获取参数方式,原本就不是mvc路由参数获取方式,这是Asp.net中webfrom页面获取参数 ...
- C++内存分区:堆、栈、自由存储区、全局/静态存储区和常量存储区
日志 ...