`

QBC Hibernate 多表查询

 
阅读更多

1.java 实体对象

 

 

package com.helloworld.domain;
// Generated 2012-3-7 18:14:29 by Hibernate Tools 3.2.1.GA



/**
 * TbAccount generated by hbm2java
 * @author  liuqing
 */
public class TbAccount  implements java.io.Serializable {


     private Integer id;
     private TbPerson tbPerson;
     private String name;

    public TbAccount() {
    }

    public TbAccount(TbPerson tbPerson, String name) {
       this.tbPerson = tbPerson;
       this.name = name;
    }
   
    public Integer getId() {
        return this.id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    public TbPerson getTbPerson() {
        return this.tbPerson;
    }
    
    public void setTbPerson(TbPerson tbPerson) {
        this.tbPerson = tbPerson;
    }
    public String getName() {
        return this.name;
    }
    
    public void setName(String name) {
        this.name = name;
    }




}

 

2.实体对象

 

 

package com.helloworld.domain;
// Generated 2012-3-7 18:14:29 by Hibernate Tools 3.2.1.GA



/**
 * TbJws generated by hbm2java
 * @author  liuqing
 */
public class TbJws  implements java.io.Serializable {


     private Integer id;
     private TbPerson tbPerson;
     private String jwsname;

    public TbJws() {
    }

    public TbJws(TbPerson tbPerson, String jwsname) {
       this.tbPerson = tbPerson;
       this.jwsname = jwsname;
    }
   
    public Integer getId() {
        return this.id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    public TbPerson getTbPerson() {
        return this.tbPerson;
    }
    
    public void setTbPerson(TbPerson tbPerson) {
        this.tbPerson = tbPerson;
    }
    public String getJwsname() {
        return this.jwsname;
    }
    
    public void setJwsname(String jwsname) {
        this.jwsname = jwsname;
    }




}

 

 

 

package com.helloworld.domain;
// Generated 2012-3-7 18:14:29 by Hibernate Tools 3.2.1.GA


import java.util.HashSet;
import java.util.Set;

/**
 * TbPerson generated by hbm2java
 * @author  liuqing
 */
public class TbPerson  implements java.io.Serializable {


     private Integer id;
     private String name;
     private Set tbJwses = new HashSet(0);
     private Set tbAccounts = new HashSet(0);

    public TbPerson() {
    }

    public TbPerson(String name, Set tbJwses, Set tbAccounts) {
       this.name = name;
       this.tbJwses = tbJwses;
       this.tbAccounts = tbAccounts;
    }
   
    public Integer getId() {
        return this.id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return this.name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    public Set getTbJwses() {
        return this.tbJwses;
    }
    
    public void setTbJwses(Set tbJwses) {
        this.tbJwses = tbJwses;
    }
    public Set getTbAccounts() {
        return this.tbAccounts;
    }
    
    public void setTbAccounts(Set tbAccounts) {
        this.tbAccounts = tbAccounts;
    }




}

 

3. QBC 多表查询方法

 

 public static void main(String args[]) {
        Session session = new Configuration().configure().buildSessionFactory().openSession();
        org.hibernate.Criteria criteria = session.createCriteria(TbPerson.class);
        //对集合对象创建别名
        criteria.createAlias("tbJwses", "a_jws");
        criteria.add(org.hibernate.criterion.Restrictions.eq("a_jws.jwsname", "3"));
        List list = criteria.list();
        for (int i = 0 ; i < list.size(); i++) {
            System.out.println("===" + ((TbPerson)list.get(i)).getName() + " id:" + ((TbPerson)list.get(i)).getId() );   
        }
    }

 

4. HQL 语言的实现

List list = session.createQuery("SELECT p FROM TbPerson p inner join p.tbJwses j WHERE j.jwsname='3'").list();
        for (int i = 0 ; i < list.size() ; i++) {
            System.out.println(list.get(i).getClass());
        }
 

 

 

 

 

分享到:
评论

相关推荐

    Hibernate QBC高级查询.rar

    4. **Join操作**:在QBC中,可以方便地进行内连接(Inner Join)、左连接(Left Outer Join)以及其他类型的连接操作,以处理多表关联查询。 5. **子查询**:QBC允许我们在查询中嵌套其他查询,这在处理复杂的业务...

    Hibernate(HQL、QBC查询)源码

    Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码

    QBC的各种查询

    5. **关联查询**:使用createAlias()方法可以实现多表联查,例如`criteria.createAlias("associatedEntity", "alias")`,然后可以通过"alias.property"的方式引用关联实体的属性。 6. **子查询**:DetachedCriteria...

    Hibernate_QBC和Hibernate_QBE

    标题"Hibernate_QBC和Hibernate_QBE"提及了两个关于Hibernate的查询方式,即Query By Criteria(QBC)和Query By Example(QBE)。Hibernate是Java领域中一个广泛使用的对象关系映射(ORM)框架,它允许开发者以面向...

    QBC_hibernate完整用法

    收录了QBC_hibernate完整用法.大家可以下载看看.作为参考.

    Java_Hibernate QBC条件查询对比

    然而,QBC在处理复杂的查询,如多表联接、子查询或者自定义SQL片段时,可能会显得力不从心,此时它的灵活性和表达能力相对较弱。 相对而言,HQL是一种面向对象的查询语言,类似于SQL,但更加面向对象。开发者可以...

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

    总的来说,Hibernate的`Criteria`、`Query`以及QBC(Query By Criteria)提供了灵活且强大的查询手段,它们不仅支持基本的单表查询,还能处理复杂的联表、分页、参数绑定和统计需求,是Java开发者进行数据库操作的...

    hibernate映射和查询

    Hibernate 提供了多种查询方式,包括 HQL(Hibernate Query Language)、QBC(Query By Criteria)和 JPA(Java Persistence API)的 Criteria API。这些查询语言提供了面向对象的方式来检索数据,比传统的 SQL 更加...

    Hibernate实例开发 HQL 与 QBC 查询

    首先,HQL是Hibernate专门设计的一种面向对象的查询语言,它的语法类似于SQL,但更注重对象而非表。例如,如果我们有一个`User`实体,我们可以使用HQL来获取所有用户: ```java Session session = sessionFactory....

    Hibernate_QBC查询[归类].pdf

    Hibernate QBC(Query By Criteria)查询是Hibernate框架中一种面向对象的查询方式,它通过提供Criteria API使得开发者能够更方便地构建和执行SQL查询。QBC查询的优势在于它允许程序员用更加面向对象的方式处理...

    Hibernate QBC分页

    QBC是Hibernate提供的一种基于对象的查询方式,与HQL(Hibernate Query Language)类似,但更接近Java的API,允许我们根据对象的属性来构建查询条件。在进行分页查询时,QBC提供了`setFirstResult()`和`...

    Hibernate的查询方式

    QBC查询方式的一个显著优点是其类型的检查性,可以减少运行时错误,同时也提供了更多的API来构造复杂的查询逻辑。 #### 总结 Hibernate的查询方式,特别是HQL和QBC,为Java开发者提供了强大而灵活的工具集,用以...

    hibernate实现动态SQL查询

    为了实现动态SQL,我们可以借助于Hibernate的QBC(Query By Criteria)和Criteria API,或者使用第三方库如MyBatis的动态SQL功能。本文主要讨论使用XML配置和FREEMARKER的方法。 四、XML配置SQL 在Hibernate中,...

    QBC查询的别名方的

    根据提供的文件信息,我们可以推断出此文档主要讨论了QBC(Query By Criteria)查询方法在Hibernate框架中的应用。下面将对文档中的几个关键点进行详细的解析与扩展。 ### QBC查询简介 QBC(Query By Criteria)是...

    Hibernate-HQL-QBC-QBE

    HQL提供了一种面向对象的查询方式,QBC和QBE则提供了更多灵活性,可以根据需求动态构建查询。同时,理解这些概念也有助于开发者更好地与其他Java ORM框架(如MyBatis)进行比较和选择。在学习和使用过程中,参考官方...

    hibernate+spring+springmvc框架 @注解开发 详细配置注释/及hibernate的HQL/QBC/SQL查询代码使用及注释

    之前也发了一个,这个包含之前的,还添加了hibernate对数据库操作的代码(注意:controller层两个QBC/SQLTest代码不能运行,只是写出了操作数据库的除了HQL的另外2种方式)。我发现现在还是有很多公司用hibernate+...

    HQL与QBC的查询条件.doc

    HQL(Hibernate Query Language)和QBC(Query By Example)是Hibernate提供的两种主要的查询方式,它们提供了灵活且强大的查询能力。下面将详细阐述这两种查询方式以及它们的查询条件。 **HQL(Hibernate Query ...

    Hibernate_QBC案例.rar

    查询所有 // 2.条件查询 // 3.模糊查询 // 4.范围查询 // 5.排序查询(order by) // 6.分页查询 // 7.投影查询(只获取部分字段的结果) // 8.聚集函数使用(聚合函数)(count、sum、avg、max、min等) // 9.TOP N...

    4.Hibernate-04查询以及优化策略1

    在本节中,我们将详细介绍 Hibernate 的查询机制和优化策略,包括 HQL、QBC 和 SQL 查询的使用和优化。 一、HQL 查询 HQL(Hibernate Query Language,Hibernate 查询语言)是 Hibernate 提供的一种查询语言,它...

Global site tag (gtag.js) - Google Analytics