1. 程式人生 > >hibernate 左外連線

hibernate 左外連線

和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