分享

Hibernate多表查询结果处理 - 51CTO.COM

 西门独孤 2011-01-15
  • Hibernate多表查询结果处理

    如果我们在Hibernate中需要查询多个表的不同字段,那么如何来获取Hibernate多表查询的结果呢?有两种方式: 对各个字段分别转化成对应类型;构造自己的复合类型。

    如果我们在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 Members members, ClassInfo classInfo " + 
    8. where members.level = classInfo.classCode ");  

    当然我们需要有一个NewMembers类和相应的构造方式。以上便是两种用于获取Hibernate多表查询的结果的方法以及其相应的代码。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多