Hibernate---关联

//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 ?
com.kgc.po.Dept@18f6559
com.kgc.po.Dept@3d8f1be9

猜你喜欢

转载自blog.csdn.net/kimi_n/article/details/84100808
今日推荐