感谢这个兄弟的资料
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数组,不同于上次实践的结果,不知道是什么原因.
个人觉得应该还有其他方法,等会了再补充上来
分享到:
相关推荐
Hibernate中的Criteria连表查询,包括单表属性查询,多表内连,以及左外连接查询
本文旨在为读者呈现不同的方式查询方式:HQL方式的查询、SQL原生态SQL方式的查询、以及Criteria方式的查询,拓展查询的不同实现思路,开阔视野、并涵盖了部分的Hibernate增删改的基本操作。
其次 关联表很多 科研查询可以包括一百多条查询条件可自动配置。 但是mybatis肯定处理不了那么复杂的查询条件,条件与或非就够它折腾了。 条件必须可以自动生成,再网上找了相关资料,一种是领域驱动设计中的规约...
NULL 博文链接:https://beisicao.iteye.com/blog/955674
Hibernate中Criteria的完整用法 Criteria 是一个完全面向对象,可扩展的条件查询API,通过它完全不需要考虑数据库底层如何实现、SQL语句如何...
使用的 Example 类是由 mybatis... SpaItemExample.Criteria criteria = example.createCriteria(); criteria.andCodeLike('%'+queryString+'%'); example.or(example.createCriteria().andNameLike('%'+queryString+
进阶查询,区别于hql和sql实现了排序,分组等查询功能,分享下,大家学习了!
第一章:Spring Data JPA入门 包括:是什么、能干什么、有什么、HelloWorld等 第二章:JpaRepository基本功能 ... 包括:Specifications基础、 Criteria查询基本概念、 Criteria查询实现、多表联接等内容
这是一种使用Java代码创建和执行JCR查询的方法,使用的接口受Hibernate / JPA使用的Criteria API的启发。 该代码基于Openmind开发的的 (openutils-mgnlcriteria)模块。 相较于openutils-mgnlcriteria存在于任何...
JPA-Criteria模块实现了JPA的Criteria API,但由Blaze-Persistence Core API支持,因此您可以从CriteriaQuery对象中获取查询构建器。 借助Spring Data或DeltaSpike Data集成,您可以轻松地在现有存储库中使用Blaze-...
Mingo 是 MongoDB 查询语言的 JavaScript 实现。Mingo 利用 MongoDB 风格查询,在客户端或者服务器端环境下,允许直接查询内存的 JavaScript 对象。特性:Comparisons Operators ($gt, $gte, $lt, $lte, $ne, $nin, ...
测试实现的功能: 一对一新增 一对多新增 多对多新增 多对多删除 乐观锁 一级缓存,二级缓存,读写并发 query 查询一级缓存 Criteria--基于条件查询 dao 实现测试
数据查询与检索是Hibernate中的一... *标准化对象查询(Criteria Query):以对象的方式进行查询,将查询语句封装为对象操作。优点:可读性好,符合Java程序员的编码习惯。缺点:不够成熟,不支持投影(projection)或统
以及包括多库多表下的 order by , distinct, group by, having等操作。 阅读推荐:第10章 特点五,常用DDL操作的封装 从数据库元数据访问,到建表,创建约束,创建sequence等各种DDL操作进行了封装,用户无需编写...
一种是直接查询,一种是使用借助criteria实现查询。 复制代码 代码如下:$user=User::model(); 1. 直接查询: $arr=array( "select"=>"username,password,email", //要查询的字段 "condition"=>"username like '%6...
这是我花费4天的时间做的北大青鸟Hibernate单元练习项目。...如何使用好Criteria限制查询条件、怎样用好和标签,怎样进行增加验证......经历过项目才会对知识有更深层次的掌握,本资料对初学者一定很有帮助。
表1:全文检索与关系数据库查询、多维数据查询、XML查询的对比 关系数据库查询 多维数据查询 XML查询 全文检索 检索技术 SQL MDX XQuery、XPath SQL (extension) 主要处理对象 关系二维数据 结构化多维数据 ...
SQL编辑器中不仅包括标准的编辑命令,也包括一些增强的功能,如快速查询表中的字段、将SQL语句的内容格式化等等。这个窗口可以处理大到4GB 的内容,对大的开发项目来说非常有用。便捷的书签可以让开发人员非常容易地...
主要介绍了java查询mongodb中的objectid示例,需要的朋友可以参考下