hibernate 左外連線
阿新 • • 發佈:2018-11-11
和SQL語句一樣,HQL也支援各種各樣的連線查詢
連線型別 | HQL語法 |
---|---|
左外連線 | left outer join 或left join |
迫切左外連線 | left outer join fetch 或 left join fetch |
內連線 | inner join或join |
迫切內連線 | inner join fetch 或 join fetch |
右外連線 | right outer join 或 right join |
//dept實體
package com.kgc.po; import java.util.HashSet; import java.util.Set; public class Dept implements java.io.Serializable { private Short deptno; private String dname; private String loc; private Set<Emp> emps = new HashSet<Emp>(); public Dept() { } public Dept(Short deptno){ this.deptno = deptno; } public Dept(Short deptno, String dname, String loc) { this.deptno = deptno; this.dname = dname; this.loc = loc; } public Short getDeptno() { return deptno; } public void setDeptno(Short deptno) { this.deptno = deptno; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } public Set<Emp> getEmps() { return emps; } public void setEmps(Set<Emp> emps) { this.emps = emps; } }
//emp實體
package com.kgc.po;
import java.util.Date;
public class Emp implements java.io.Serializable {
private static final long serialVersionUID = 586622974111340861L;
private Short empno;
private String ename;
private String job;
private Short mgr;
private Date hiredate;
private Double sal;
private Double comm;
private Dept dept;
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
public Emp(Short empno) {
this.empno = empno;
}
public Short getEmpno() {
return this.empno;
}
public void setEmpno(Short empno) {
this.empno = empno;
}
public String getEname() {
return this.ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return this.job;
}
public void setJob(String job) {
this.job = job;
}
public Short getMgr() {
return this.mgr;
}
public void setMgr(Short mgr) {
this.mgr = mgr;
}
public Date getHiredate() {
return this.hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
public Double getSal() {
return this.sal;
}
public void setSal(Double sal) {
this.sal = sal;
}
public Double getComm() {
return this.comm;
}
public void setComm(Double comm) {
this.comm = comm;
}
public Emp() {
}
public Emp(String ename,String job){
this.ename = ename;
this.job = job;
}
}
//部門邏輯層
package com.kgc.dao;
import java.io.Serializable;
import java.util.List;
import com.kgc.common.HibernateSessionFactory;
import com.kgc.po.Dept;
public class DeptDao {
public List find(String hql){
return HibernateSessionFactory.getSession().createQuery(hql).list();
}
}
//test
package com.kgc.test;
import com.kgc.biz.DeptBiz;
import com.kgc.biz.EmpBiz;
import com.kgc.po.Dept;
import com.kgc.po.Emp;
public class DeptTest {
public static void main(String[] args) {
DeptBiz biz = new DeptBiz();
biz.findTest();
}
}
執行結果
Hibernate:
select
dept0_.DEPTNO as DEPTNO1_0_,
emps1_.EMPNO as EMPNO0_1_,
dept0_.DNAME as DNAME1_0_,
dept0_.LOC as LOC1_0_,
emps1_.ENAME as ENAME0_1_,
emps1_.JOB as JOB0_1_,
emps1_.MGR as MGR0_1_,
emps1_.HIREDATE as HIREDATE0_1_,
emps1_.SAL as SAL0_1_,
emps1_.COMM as COMM0_1_,
emps1_.DEPTNO as DEPTNO0_1_
from
DEPT dept0_
left outer join
EMP emps1_
on dept0_.DEPTNO=emps1_.DEPTNO
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
[email protected] null