`

hibernate多表查询

    博客分类:
  • java
阅读更多
二张表分别为用户表(users)和贴子表(notes),其中users中的userid是notes表的外键,users跟notes是一对多,多对一关系,由myEclpise自动生成映射文件
Users.hbm.xml

Java代码 复制代码

    ...... 
     
     <set name="noteses" inverse="true"> 
         <key> 
             <column name="userid" not-null="true" /> 
         </key> 
         <one-to-many class="com.note.model.Notes" /> 
     </set> 
     
    ..... 



Notes.hbm.xml

Java代码 复制代码

    ...... 
     
      <many-to-one name="users" class="com.note.model.Users" fetch="select"> 
          <column name="userid" not-null="true" /> 
      </many-to-one> 
     
    ...... 



注意:如果多表查询,在写HQL语句时取notes的userid字段不能写notes.userid(这个问题下午我查了好久,才找到原因的)

HQL语句:From Notes notes,Users users WHERE notes.users=users.userid AND notes.issubject=1

又一注意点:该查询结果为存放对象数组的list集,可以用以下代码测试

Java代码 复制代码

                       page=ins.listSubjects(page);//page是我的分页类,并存放了查询后的返回结果 
    List list=page.getResult(); 
    System.out.println(page.getPageToolBar()); 
    for(int i=0;i<list.size();i++){ 
        Object[] obj=(Object[])list.get(i); 
        for(int j=0;j<obj.length;j++){ 
            if(obj[j] instanceof Notes){ 
                Notes note=(Notes)obj[j]; 
                System.out.print(note.getTitle()); 
                 
            }else if(obj[j] instanceof Users){ 
                Users user=(Users)obj[j]; 
                System.out.print(user.getUsername()); 
            } 
        } 
        System.out.println(); 
    } 



在jsp页面显示结果的时候我觉得用EL表达式会简单的多,如:
Java代码 复制代码

    <logic:present name="subjects"> 
            <table width="100%" border="1" rules="rows" frame="below" cellpadding="5" cellspacing="0" bordercolorlight="#6C7BA6" bordercolordark="#ffffff" bgcolor="#DEEFFF" class="DoubleColorTable"> 
                <logic:present name="subjects" property="result"> 
                <logic:iterate id="objs" name="subjects" indexId="number" property="result"> 
                    <tr> 
                        <td> 
                        <html:link page="/listFollow.do?method=listFollow&subjectId=${objs[0].noteid}"  styleId="link001"> 
                            主题:${objs[0].title} 
                        </html:link> 
                        </td> 
                        <td> 
                        作者:${objs[1].username} 
                        </td> 
                        <td> 
                        发贴时间:${objs[0].addtime} 
                        </td> 
                    </tr> 
                </logic:iterate> 
                </logic:present> 
            </table> 
            <bean:write name="subjects" property="pageToolBar" filter="false" /> 
        </logic:present> 
分享到:
评论

相关推荐

    hibernate 多表查询

    hibernate 多表查询 hibernate 多表不同于一般的sql嵌套查询,嵌套查询是不支持的,所以必须要配置好才能实现多表!只要配置好了,还是特别好用的

    hibernate多表联合查询

    ### Hibernate多表联合查询详解 #### 一、引言 在实际项目开发中,我们经常需要处理复杂的数据库查询,特别是涉及到多个表之间的关联查询。...希望本文能对你理解Hibernate的多表联合查询有所帮助。

    Hibernate连表查询 Hibernate连表查询

    通过对HBM映射文件的理解、DAO层的连表查询实现以及查询结果的处理等几个方面进行了详细解释。在实际项目中,合理运用这些技巧可以极大地提高开发效率和代码质量。需要注意的是,在编写连表查询时要充分考虑性能问题...

    Hibernate多表查询.txt

    本文将深入探讨Hibernate中的多表查询技术,解析其背后的原理与实践方法,帮助开发者更好地掌握这一核心技能。 ### Hibernate多表查询概述 在现实世界的应用场景中,数据往往不会孤立存在,而是通过关联分布在多个...

    Hibernate 多表连接分页查询示范项目

    总结,"Hibernate 多表连接分页查询示范项目"是一个实用的示例,它展示了如何在实际应用中利用 Hibernate Criteria API 实现复杂查询和分页,对于学习和掌握 Hibernate 的高级特性和数据库操作技巧非常有帮助。...

    hibernate 进行多表查询每个表中各取几个字段

    在Hibernate中,多表查询通常涉及到关联关系的映射,包括一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany)。通过这些关联,我们可以实现JOIN操作来获取多个表的数据。 1. 关联...

    hibernate多对多查询

    总之,Hibernate的多对多查询涉及实体类的定义、中间表的映射以及查询语句的编写。理解和熟练运用这些概念对于开发复杂的Java应用程序至关重要。在实际项目中,应根据业务需求灵活调整关联策略,确保数据的一致性和...

    hibernate多表查询[定义].pdf

    在本案例中,我们关注的是Hibernate中的多表查询,这是在处理复杂数据关系时常见的需求。 多表查询涉及到了三个或更多的表之间的关联,这在现实世界的业务场景中很常见,如学生信息与班级信息的关联。在Hibernate中...

    hibernate代码优化基于配置的多表查询

    本文将深入探讨如何通过配置优化Hibernate的多表查询,以提高应用的性能。 1. **联合查询优化**: 在进行多表查询时,Hibernate默认可能会生成多个单表查询,这会导致大量的数据库往返,降低效率。通过配置`@Join...

    Hibernate各种查询:联表查询 分页查询 位置参数查询(?) 占位符查询(冒号查询) 统计查询

    在Hibernate中,可以使用`Criteria` API或者`HQL`(Hibernate Query Language)来实现多表联查。`Criteria` API提供了更加面向对象的查询方式,通过`createCriteria()`方法指定主表,然后使用`createAlias()`方法...

    Hibernate多对多关联添加及查询示例

    本示例主要关注的是Hibernate中的多对多关联映射及其添加与查询方法。 多对多关联是数据库设计中的一种常见关系类型,指的是两个实体之间可以存在多个对应关系。例如,在学生与课程的关系中,一个学生可以选修多门...

    Hibernate基于连接表的一对多单向关联

    总结,"Hibernate基于连接表的一对多单向关联"涉及到的主要知识点包括:数据库设计的一对多关系、Hibernate的实体映射、单向关联的配置、以及如何在Java代码中操作和查询这种关联。理解并熟练应用这些知识点,对于...

    Hibernate(多对多表操作)

    在Hibernate中,实现多对多关系需要通过关联表(也称为中间表或连接表)来完成。这个关联表通常包含两个外键,分别对应于两个参与关系的实体。以下是一个具体的步骤详解: 1. **定义实体类**:首先,为参与多对多...

    day36 04-Hibernate检索方式:多表连接查询

    标题中的“day36 04-Hibernate检索方式:多表连接查询”表明这是一个关于Hibernate框架的教程,重点讲解如何在Hibernate中进行多表连接查询。在这个主题中,我们将深入探讨Hibernate的ORM(对象关系映射)机制以及...

    Hibernate-基础联表模板

    "Hibernate-基础联表模板"是针对Hibernate中联表查询的一个实用工具,旨在帮助开发者快速地进行多表关联查询,而不必记住复杂的SQL语句。 1. **Hibernate简介** Hibernate是一种开源的ORM框架,它允许开发者将Java...

    Hibernate_query查询数据表中的一个字段.

    Hibernate是Java领域的一个开源ORM框架,它简化了数据库操作,通过映射Java类到数据库表,可以将数据库操作转化为对Java对象的操作。Hibernate提供了一种灵活的查询语言——HQL(Hibernate Query Language),以及 ...

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...

    struts2+hibernate+spring多表操作示例

    对于多表操作,Hibernate支持一对多、多对一、一对一和多对多等关联关系。通过注解或XML配置,可以定义表间的关联,例如`@ManyToOne`、`@OneToMany`、`@OneToOne`和`@ManyToMany`。在操作时,可以通过SessionFactory...

    springmvc+hibernate多表映射

    在多表映射中,Hibernate允许我们定义实体类之间的关系,如一对一、一对多、多对一和多对多关系。 在“一对多”关系中,一个实体可以对应多个其他实体。例如,一个部门可以有多个员工。在Hibernate中,我们通过在...

    Hibernate的高级查询

    HQL是Hibernate的SQL方言,它是面向对象的查询语言,允许我们用类和对象的名字而不是表和列来写查询语句。HQL支持各种复杂的查询,如连接查询、分组查询、子查询等。例如,我们可以用以下HQL语句查询所有未删除的...

Global site tag (gtag.js) - Google Analytics