`
qingzuochen
  • 浏览: 271690 次
  • 性别: 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-HQL、Criteria、SQL实现查询对照以及增删改代码

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

    自定义查询框架Criteria

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

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

    NULL 博文链接:https://beisicao.iteye.com/blog/955674

    Hibernate的Criteria用法总结.doc

    Hibernate中Criteria的完整用法 Criteria 是一个完全面向对象,可扩展的条件查询API,通过它完全不需要考虑数据库底层如何实现、SQL语句如何...

    使用 Example 类 实现MySQL一个搜索框对多个字段的模糊查询

    使用的 Example 类是由 mybatis... SpaItemExample.Criteria criteria = example.createCriteria(); criteria.andCodeLike('%'+queryString+'%'); example.or(example.createCriteria().andNameLike('%'+queryString+

    criteria进阶查询

    进阶查询,区别于hql和sql实现了排序,分组等查询功能,分享下,大家学习了!

    spring data jpa 教程

    第一章:Spring Data JPA入门 包括:是什么、能干什么、有什么、HelloWorld等 第二章:JpaRepository基本功能 ... 包括:Specifications基础、 Criteria查询基本概念、 Criteria查询实现、多表联接等内容

    jcr-criteria:使用Java代码的JCR查询

    这是一种使用Java代码创建和执行JCR查询的方法,使用的接口受Hibernate / JPA使用的Criteria API的启发。 该代码基于Openmind开发的的 (openutils-mgnlcriteria)模块。 相较于openutils-mgnlcriteria存在于任何...

    持续性:面向JPA提供者的Rich Criteria API

    JPA-Criteria模块实现了JPA的Criteria API,但由Blaze-Persistence Core API支持,因此您可以从CriteriaQuery对象中获取查询构建器。 借助Spring Data或DeltaSpike Data集成,您可以轻松地在现有存储库中使用Blaze-...

    MongoDB查询的JavaScript实现Mingo.zip

    Mingo 是 MongoDB 查询语言的 JavaScript 实现。Mingo 利用 MongoDB 风格查询,在客户端或者服务器端环境下,允许直接查询内存的 JavaScript 对象。特性:Comparisons Operators ($gt, $gte, $lt, $lte, $ne, $nin, ...

    hibernate:一对多,多对多,一对一,乐观锁,二级缓存

    测试实现的功能: 一对一新增 一对多新增 多对多新增 多对多删除 乐观锁 一级缓存,二级缓存,读写并发 query 查询一级缓存 Criteria--基于条件查询 dao 实现测试

    hibernate 查询?Hibernate的HQL查询

    数据查询与检索是Hibernate中的一... *标准化对象查询(Criteria Query):以对象的方式进行查询,将查询语句封装为对象操作。优点:可读性好,符合Java程序员的编码习惯。缺点:不够成熟,不支持投影(projection)或统

    支持多数据库的ORM框架ef-orm.zip

    以及包括多库多表下的 order by , distinct, group by, having等操作。 阅读推荐:第10章 特点五,常用DDL操作的封装 从数据库元数据访问,到建表,创建约束,创建sequence等各种DDL操作进行了封装,用户无需编写...

    yii数据库的查询方法

    一种是直接查询,一种是使用借助criteria实现查询。 复制代码 代码如下:$user=User::model(); 1. 直接查询: $arr=array( "select"=>"username,password,email", //要查询的字段 "condition"=>"username like '%6...

    北大青鸟Hibernate单元练习项目——电影信息管理系统

    这是我花费4天的时间做的北大青鸟Hibernate单元练习项目。...如何使用好Criteria限制查询条件、怎样用好和标签,怎样进行增加验证......经历过项目才会对知识有更深层次的掌握,本资料对初学者一定很有帮助。

    sql2005全文检索.doc

     表1:全文检索与关系数据库查询、多维数据查询、XML查询的对比     关系数据库查询 多维数据查询 XML查询 全文检索 检索技术 SQL MDX XQuery、XPath SQL (extension) 主要处理对象 关系二维数据 结构化多维数据 ...

    Toad 使用快速入门

    SQL编辑器中不仅包括标准的编辑命令,也包括一些增强的功能,如快速查询表中的字段、将SQL语句的内容格式化等等。这个窗口可以处理大到4GB 的内容,对大的开发项目来说非常有用。便捷的书签可以让开发人员非常容易地...

    java查询mongodb中的objectid示例

    主要介绍了java查询mongodb中的objectid示例,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics