Hibernate多表查询结果处理

 (2014-07-06 20:45:40)

sg_trans.gif转载

标签: 

hibernate

 

多表查询

 

结果集处理

分类: Java

如果我们在Hibernate中需要查询多个表的不同字段,那么如何来获取Hibernate多表查询的结果呢?有两种方式:

1、 对各个字段分别转化成对应类型,如下:

Java代码:


  1. Query q = session.createQuery(" select members, classInfo.className " +       

  2.     " from Members members, ClassInfo classInfo " +       

  3.     " where members.level = classInfo.classCode ");          

  4. List result = q.list();       

  5. Iterator it = result.iterator();       

  6. while (it.hasNext()) {       

  7.    Object[] tuple = (Object[]) it.next();       

  8.    Members members = (Members) tuple[ 0 ];       

  9.    String className = (String) tuple[ 1 ];       

  10. }     

  11. Query q = session.createQuery

  12. (" select members, classInfo.className " + 

  13. " from Members members, ClassInfo classInfo " + 

  14. " where members.level = classInfo.classCode ");

  15.  List result = q.list(); Iterator it = result.iterator();

  16.  while (it.hasNext()) { Object[] tuple = (Object[]) it.next(); 

  17. Members members = (Members) tuple[ 0 ]; 

  18. String className = (String) tuple[ 1 ]; } 

这是获取Hibernate多表查询的结果的最常用的方式。

2、构造自己的复合类型,如下:

Java代码:


  1. Query q = session.createQuery

  2. (" select new NewMembers(members, classInfo.className) " +       

  3.     " from Members members, ClassInfo classInfo " +       

  4.     " where members.level = classInfo.classCode ");     

  5. Query q = session.createQuery

  6. (" select new NewMembers(members, classInfo.className)

  7.  " + " from M