码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate的HQL多表查询

时间:2017-09-12 20:49:12      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:gif   opened   tran   color   none   mit   deb   保存   es2017   

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     }
View Code

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     }
View Code

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     }
View Code

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     }
View Code

Debug截图:

技术分享

 

Hibernate的HQL多表查询

标签:gif   opened   tran   color   none   mit   deb   保存   es2017   

原文地址:http://www.cnblogs.com/geore/p/7511933.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!