`
qingzuochen
  • 浏览: 276390 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Criteria实现多表查询

阅读更多
感谢这个兄弟的资料 http://www.blogjava.net/danxy2008/archive/2006/01/18/28437.html

自己的例子有点复杂,我就摘抄这位的吧

Criteria 可以進行複合查詢,即在原有的查詢基礎上再進行查詢,例如在 Room 對 User 的一對多關聯中,
在查詢出所有的 Room 資料之後,希望再查詢 users 中 "age" 為 30 的 user 資料:

Criteria roomCriteria = session.createCriteria(Room.class); 
Criteria userCriteria = roomCriteria.createCriteria("users"); 
userCriteria.add(Restrictions.eq("age", new Integer(30))); 
List rooms = roomCriteria.list(); // 只列出 users 屬性中有 user 之 "age" 為 30 的 Room 
Iterator iterator = rooms.iterator();


要说明的是,我用这个方法查出来的list结果是一个Object数组.数组中的元素为关联的2个对象.这是需要注意的,不然会报ClassCastException

补上自己的例子:

clss Person{
private Integer id;
private String name;
private Date birthday;
private Set addresses = new HashSet(0);
....
}
class Address{
private Integer addressid;
private Person person;
private String homeaddress;
private String companyaddress;
}
Criteria criteria = test.session.createCriteria(Person.class).createCriteria("addresses").add(Restrictions.eq("addressid", 1));
List list = criteria.list();

运行后sql如下:
Hibernate:
select this_.id as id0_1_, this_.name as name0_1_, this_.birthday as birthday0_1_, address1_.addressid as addressid1_0_, address1_.personid as personid1_0_, address1_.homeaddress as homeaddr3_1_0_, address1_.companyaddress as companya4_1_0_ from test.person this_ inner join test.address address1_ on this_.id=address1_.personid where address1_.addressid=?

且结果为Person数组,不同于上次实践的结果,不知道是什么原因.

个人觉得应该还有其他方法,等会了再补充上来

分享到:
评论
2 楼 qingzuochen 2010-06-09  
wayinit 写道
只有内联接 如果要用到其他的联接怎么办?

不知道耶。。百度知道
1 楼 wayinit 2010-06-01  
只有内联接 如果要用到其他的联接怎么办?

相关推荐

    Criteria连表查询

    Hibernate中的Criteria连表查询,包括单表属性查询,多表内连,以及左外连接查询

    Hibernate-Criteria_模糊查询

    通过上述介绍,我们可以看到,利用Hibernate的Criteria API进行模糊查询不仅提供了极大的灵活性,还极大地简化了查询语句的编写过程,使得开发者能够更加专注于业务逻辑的实现。当然,随着项目的复杂度增加,可能还...

    Hibernat 使用Criteria查询多对多关系(SET集合)条件

    ### Hibernat 使用Criteria查询多对多关系(SET集合)条件 #### 背景介绍与概念理解 在Java开发中,特别是在企业级应用中,持久化层的处理至关重要。Hibernate作为一款流行的Java持久化框架,它提供了一种非常简便...

    Hibernate-HQL、Criteria、SQL实现查询对照以及增删改代码

    本文旨在为读者呈现不同的方式查询方式:HQL方式的查询、SQL原生态SQL方式的查询、以及Criteria方式的查询,拓展查询的不同实现思路,开阔视野、并涵盖了部分的Hibernate增删改的基本操作。

    Hibernate-Criteria 模糊查询

    本文将深入探讨`Hibernate-Criteria`模糊查询的实现方式,以及其背后的原理。 #### Criteria接口简介 `Criteria`是Hibernate提供的一个用于执行查询的标准API,它基于对象模型而不是SQL语句来构建查询,这使得开发...

    Hibernate中,利用Criteria查询容器实现sql的写法

    同时,很多IDE如Eclipse和IntelliJ IDEA提供了对Hibernate的支持,可以自动生成Criteria查询,简化开发过程。 在进行团队协作时,文件管理也非常重要,"java集成svn"可能指的是项目中使用了Subversion(SVN)作为...

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

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

    hibernateCriteria查询

    在Criteria查询中,可以通过`setFirstResult()` 和`setMaxResults()` 方法来实现分页: ```java Criteria criteria = session.createCriteria(Books.class); criteria.setFirstResult(10); // 设置起始位置 ...

    hibernate多表联合查询

    在Hibernate中,可以使用以下几种方式来实现多表联合查询: - **HQL (Hibernate Query Language)** - **Criteria API** - **Native SQL** 本文将重点介绍如何使用HQL和Native SQL来实现多表联合查询。 #### 三、...

    自定义查询框架Criteria

    其次 关联表很多 科研查询可以包括一百多条查询条件可自动配置。 但是mybatis肯定处理不了那么复杂的查询条件,条件与或非就够它折腾了。 条件必须可以自动生成,再网上找了相关资料,一种是领域驱动设计中的规约...

    criteria介绍与使用

    总之,`Criteria`API为Java开发者提供了强大而灵活的数据查询能力,使得在不编写SQL的情况下也能实现复杂的查询逻辑。通过本文的介绍,相信读者已经掌握了`Criteria`的基本用法和高级特性,可以在实际项目中灵活运用...

    Hibernate的Criteria文档

    在Java的持久层框架Hibernate中,Criteria API是一个强大的查询工具,它可以用来替代传统的SQL或HQL(Hibernate Query Language)查询,以实现更加面向对象的数据库交互。Criteria API的设计旨在屏蔽不同数据库之间...

    Criteria.pdf

    - **使用场景**:`Criteria`适合在已知将立即执行查询的情况下使用,而`DetachedCriteria`则更适合于需要延迟执行查询或者需要跨多个`Session`共享查询条件的场景。 - **灵活性**:两者均提供了高度的灵活性,可以...

    Hibernate的Criteria用法总结.doc

    Hibernate 的 Criteria 是一个完全面向对象、可扩展的条件查询 API,通过它完全不需要考虑数据库底层如何实现、SQL 语句如何实现。Criteria 提供了灵活的查询条件组装方式,能够满足开发中复杂的查询需求。 一、...

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

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

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

    总结,Hibernate提供了多种方式进行多表查询并选择特定字段,包括HQL和Criteria API。理解并熟练运用这些技术,能帮助我们在Java应用中高效地处理复杂的数据库操作。同时,注意性能优化,确保应用的运行效率。

    Hibernate Criteria 排序的問題

    但对于复杂的多表关联查询场景,则需要借助Criteria API来灵活构建查询条件。本文将围绕给定的代码片段,深入探讨Hibernate Criteria API中排序功能的使用方法与注意事项。 #### 二、基础知识回顾 在开始之前,...

    Hibernate_Criteria条件查询数据

    5. **分页**:通过`Criteria.setFirstResult()`和`Criteria.setMaxResults()`实现分页查询,前者指定从哪一条开始,后者指定最多返回多少条。 6. **投影**:Criteria查询不仅可以获取完整的对象,还可以进行投影...

Global site tag (gtag.js) - Google Analytics