HQL的内连接查询
对于HQL内链接查询,查询的是两张表的数据,这两张表的数据首先是保存在数组之中,然后在将每一个数组保存在List集合之中进行返回
代码片段:
1 @Test 2 ????// 内连接 3 ????public void fun1() { 4 ????????SessionFactory factory = null; 5 ????????Session session = null; 6 ????????Transaction tx = null; 7 ????????try { 8 ????????????factory = Tools.getSessionFactory(); 9 ????????????session = factory.openSession();10 ????????????tx = session.beginTransaction();11 ????????????// mans是Customer实体类的关联LinkMan实体类的一个集合属性12 ????????????Query query = session.createQuery("from Customer c inner join c.mans");13 ????????????List list = query.list();14 ????????????tx.commit(); ???????????15 ????????} catch (Exception e) {16 ????????????tx.rollback();17 ????????????e.printStackTrace();18 ????????} finally {19 ????????????session.close();20 ????????}21 ????}
debug截图:
HQL迫切内连接查询
hql的迫切内连接查询,只需要将内连接查询加上一个fetch就行,如下:
1 from Customer c inner join fetch c.mans
迫切内连接和内连接的主要的区别是,内连接的List每部分是一个对象数组,而迫切内连接的List每部分返回的是一个对象。
代码片段:
1 @Test 2 ????// 迫切内连接 3 ????public void fun2() { 4 ????????SessionFactory factory = null; 5 ????????Session session = null; 6 ????????Transaction tx = null; 7 ????????try { 8 ????????????factory = Tools.getSessionFactory(); 9 ????????????session = factory.openSession();10 ????????????tx = session.beginTransaction();11 ????????????// mans是Customer实体类的关联LinkMan实体类的一个集合属性12 ????????????Query query = session.createQuery("from Customer c inner join fetch c.mans");13 ????????????List list = query.list();14 ????????????tx.commit(); ???????????15 ????????} catch (Exception e) {16 ????????????tx.rollback();17 ????????????e.printStackTrace();18 ????????} finally {19 ????????????session.close();20 ????????}21 ????}
Debug截图:
HQL的左外连接
左外连接的hql语句:
1 from Customer c left outer join 关联另一个实体的属性
代码片段:
1 @Test 2 ????// 左外连接 3 ????public void fun3() { 4 ????????SessionFactory factory = null; 5 ????????Session session = null; 6 ????????Transaction tx = null; 7 ????????try { 8 ????????????factory = Tools.getSessionFactory(); 9 ????????????session = factory.openSession();10 ????????????tx = session.beginTransaction();11 ????????????Query query = session.createQuery("from Customer c left outer join c.mans");12 ????????????List list = query.list();13 ????????????tx.commit(); ???????????14 ????????} catch (Exception e) {15 ????????????tx.rollback();16 ????????????e.printStackTrace();17 ????????} finally {18 ????????????session.close();19 ????????}20 ????}
Debug截图:
HQL的左外迫切连接
迫切左外连接hql语句:
from Customer c left outer join fetch 关联的另一个实体类在此类中的属性
代码片段:
1 @Test 2 ????// 迫切左外连接 3 ????public void fun4() { 4 ????????SessionFactory factory = null; 5 ????????Session session = null; 6 ????????Transaction tx = null; 7 ????????try { 8 ????????????factory = Tools.getSessionFactory(); 9 ????????????session = factory.openSession();10 ????????????tx = session.beginTransaction();11 ????????????Query query = session.createQuery("from Customer c left outer join fetch c.mans");12 ????????????List list = query.list();13 ????????????tx.commit(); ???????????14 ????????} catch (Exception e) {15 ????????????tx.rollback();16 ????????????e.printStackTrace();17 ????????} finally {18 ????????????session.close();19 ????????}20 ????}
Debug截图:
Hibernate的HQL多表查询
原文地址:http://www.cnblogs.com/geore/p/7511933.html