Hibernate---關聯
阿新 • • 發佈:2018-11-15
//dao層
package com.kgc.dao; import java.util.List; import java.util.Map; import org.hibernate.Criteria; import org.hibernate.criterion.CriteriaSpecification; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Restrictions; import com.kgc.common.HibernateSessionFactory; import com.kgc.po.Dept; import com.kgc.po.Emp; public class DeptDao { public List testJoin(){ return HibernateSessionFactory.getSession() /*若不寫CriteriaSpecification.xx方法,預設是內連線查詢 * CriteriaSpecification.LEFT_JOIN 左外連線查詢 * CriteriaSpecification.FULL_JOIN 包括左外連線和右連線 * createCriteria和createAlias(arg0, arg1)效果完全相同 */ .createCriteria(Dept.class,"d") .createCriteria("d.emps", "e",CriteriaSpecification.LEFT_JOIN) // .add(Restrictions.ilike("dname", "c",MatchMode.ANYWHERE)) .add(Restrictions.ilike("e.ename", "a",MatchMode.START)) .list(); } }
//biz層
package com.kgc.biz; import java.text.DateFormat; import java.text.ParseException; import java.util.HashMap; import java.util.List; import java.util.Map; import org.hibernate.HibernateException; import org.hibernate.Transaction; import com.kgc.common.HibernateSessionFactory; import com.kgc.dao.DeptDao; public class DeptBiz { public void testJoin(){ Transaction tx = null; try { tx=HibernateSessionFactory.getSession().beginTransaction(); List<Object> result = dao.testJoin(); for (Object object : result) { System.out.println(object); } tx.commit(); } catch (HibernateException e) { e.printStackTrace(); if(tx!=null){ tx.rollback(); } } } }
//test
package com.kgc.test;
import com.kgc.biz.DeptBiz;
public class DeptTest {
public static void main(String[] args) {
DeptBiz biz = new DeptBiz();
biz.testJoin();
}
}
//執行結果
Hibernate:
select
this_.DEPTNO as DEPTNO1_1_,
this_.DNAME as DNAME1_1_,
this_.LOC as LOC1_1_,
e1_.DEPTNO as DEPTNO1_,
e1_.EMPNO as EMPNO,
e1_.EMPNO as EMPNO0_0_,
e1_.ENAME as ENAME0_0_,
e1_.JOB as JOB0_0_,
e1_.MGR as MGR0_0_,
e1_.HIREDATE as HIREDATE0_0_,
e1_.SAL as SAL0_0_,
e1_.COMM as COMM0_0_,
e1_.DEPTNO as DEPTNO0_0_
from
DEPT this_
left outer join
EMP e1_
on this_.DEPTNO=e1_.DEPTNO
where
lower(e1_.ENAME) like ?
[email protected]
[email protected]