您的位置:首页
hibernate-HQL连接查询
2016-11-06 20:08
387 查看
和SQL查询一样,HQL也支持各种各样的连接查询, 如内连接、外连接。
实例:
实例:
package Test; import static org.junit.Assert.*; import java.util.List; import org.hibernate.Session; import org.junit.Test; import entity.Dept; import entity.Emp; import util.HibernateSessionFactory; public class HqlTest { /** * 使用内连接查询部门和员工的信息。inner join,查出的是2个实体对象的列表,所以是object[]对象数组 */ @Test public void test1() { Session session=HibernateSessionFactory.getSession(); try { List<Object[]> list = session.createQuery("from Dept d join d.emps").list(); for (Object[] objects : list) { Dept dept=(Dept) objects[0]; Emp emp = (Emp) objects[1]; System.out.println(emp.getEname()+"\t"+dept.getDname()); System.out.println("查询成功!"); } } catch (Exception e) { e.printStackTrace(); System.out.println("查询失败!"); }finally{ session.close(); } } /*使用隐式内连接按部门条件查询员工信息,查询的是Emp对象,所以返回是Emp类型的集合*/ @Test public void test2() { Session session=HibernateSessionFactory.getSession(); try { List<Emp> list = session.createQuery("from Emp e where e.dept.dname='SALES'").list(); for (Emp emp : list) { System.out.println(emp.getEname()+"\t"+emp.getDept().getDname()); } } catch (Exception e) { e.printStackTrace(); System.out.println("查询成功!"); }finally{ session.close(); } } /** * select子句中使用隐式内连接按部门条件查询员工信息。 */ @Test public void test3() { Session session=HibernateSessionFactory.getSession(); try { List<Object[]> list = session.createQuery("select e.dept.dname,e.ename from Emp e where e.dept.dname='SALES'").list(); for (Object[] objects : list) { System.out.println(objects[0]+"~~~~"+objects[1]); } System.out.println("查询成功!"); } catch (Exception e) { e.printStackTrace(); }finally{ session.close(); } } /** * 使用迫切内连接查询部门和员工的信息。 */ @Test public void test4() { Session session=HibernateSessionFactory.getSession(); try { List<Dept> list = session.createQuery("select distinct d from Dept d inner join fetch d.emps").list(); for (Dept dept : list) { System.out.println(dept.getDname()+"\t"+dept.getEmps()); } System.out.println("查询成功!"); } catch (Exception e) { e.printStackTrace(); }finally{ session.close(); } } /** * 使用迫切左外连接查询部门和员工的信息。 */ @Test public void test5() { Session session=HibernateSessionFactory.getSession(); try { List<Dept> list = session.createQuery("select distinct d from Dept d left join fetch d.emps").list(); for (Dept dept : list) { System.out.println(dept.getDname()+"\t"+dept.getEmps()); } System.out.println("查询成功!"); } catch (Exception e) { e.printStackTrace(); }finally{ session.close(); } } /** * 使用交叉连接查询部门和员工的信息。 */ @Test public void test6() { Session session=HibernateSessionFactory.getSession(); try { List<Object[]> list = session.createQuery("from Dept d,Emp e where d.deptno=e.dept.deptno").list(); for (Object[] objects : list) { Dept dept=(Dept) objects[0]; Emp emp=(Emp) objects[1]; System.out.println(emp.getEname()+"\t"+dept.getDname()); } System.out.println("查询成功!"); } catch (Exception e) { e.printStackTrace(); }finally{ session.close(); } } }
相关文章推荐
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- Hibernate 笔记 HQL查询(三) 分页,表连接,批量更新,引用SQL
- Hibernate批量处理数据、[HQL连接查询]
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- Hibernate批量处理数据、HQL连接查询
- hibernate系列十五:hql连接查询,查询性能优化,hql批量增删改
- hibernate----懒加载,原生 sql查询及多种hql查询,表连接查询
- hibernate关于hql的左外连接查询
- Hibernate-HQL查询(2)子查询、连接查询
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- 关于Hibernate、NHibernate的 HQL 连接字段,字段拼接查询问题
- 【Hibernate步步为营】--hql连接查询及外置命名查询
- (转)Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- hibernate——HQL(二)简单的连接查询、隐式连接、显示连接
- hibernate_day04_13_HQL多表查询(内连接和迫切内连接)
- Hibernate_查询_HQL详解(二)_聚集函数、分组、连接查询、查询时使用参数的HQL语法
- hibernate_day04_14_HQL多表查询(左外连接和迫切左外连接)
- hibernate hql 连接查询
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题