- 浏览: 588013 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
liuhuo:
总算找到一个可用的了,非常感谢楼主!其他的都不靠谱啊
Flex与Javascript相互调用例子(附源码) -
Array_06:
你好,请问,一个今年7月拿大学毕业证,应届生,大专学历,做Ja ...
为什么程序员得到的报酬与他们的生产力不成正比 -
778856:
sam_kee 写道晕了哦,我想知道快捷键本来默认就是没有快捷 ...
利用eclipse(MyEclipse)快速生成set、get方法的方法 -
hhsc00:
你真对不起老鸟这个称号……
坑爹的360(不吐不快) -
white_crucifix:
somewhater 写道我还以为去360工作去了呢。。。。。 ...
坑爹的360(不吐不快)
1、创建一个Criteria实例
net.sf.hibernate.Criteria这个接口代表对一个特定的持久化类的查询。Session是用来制造Criteria实例的工厂。
Criteria crit = sess.createCriteria(Cat.class);
crit.setMaxResults(50);
List cats = crit.list();
2、缩小结果集范围
一个查询条件(Criterion)是net.sf.hibernate.expression.Criterion接口的一个实例。类net.sf.hibernate.expression.Expression定义了获得一些内置的Criterion类型。
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "Fritz%") )
.add( Expression.between("weight", minWeight, maxWeight) )
.list();
表达式(Expressions)可以按照逻辑分组.
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "Fritz%") )
.add( Expression.or(
Expression.eq( "age", new Integer(0) ),
Expression.isNull("age")
) )
.list();
List cats = sess.createCriteria(Cat.class)
.add( Expression.in( "name", new String[] { "Fritz", "Izi", "Pk" } ) )
.add( Expression.disjunction()
.add( Expression.isNull("age") )
.add( Expression.eq("age", new Integer(0) ) )
.add( Expression.eq("age", new Integer(1) ) )
.add( Expression.eq("age", new Integer(2) ) )
) )
.list();
有很多预制的条件类型(Expression的子类)。有一个特别有用,可以让你直接嵌入SQL。
List cats = sess.createCriteria(Cat.class)
.add( Expression.sql("lower($alias.name) like lower(?)", "Fritz%", Hibernate.STRING) )
.list();
其中的{alias}是一个占位符,它将会被所查询实体的行别名所替代。(原文:The {alias} placeholder with be replaced by the row alias of the queried entity.)
3、对结果排序
可以使用net.sf.hibernate.expression.Order对结果集排序.
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "F%")
.addOrder( Order.asc("name") )
.addOrder( Order.desc("age") )
.setMaxResults(50)
.list();
4、关联(Associations)
你可以在关联之间使用createCriteria(),很容易地在存在关系的实体之间指定约束。
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "F%")
.createCriteria("kittens")
.add( Expression.like("name", "F%")
.list();
注意,第二个createCriteria()返回一个Criteria的新实例,指向kittens集合类的元素。
下面的替代形式在特定情况下有用。
List cats =
sess.createCriteria(Cat.class)
.createAlias("kittens", "kt")
.createAlias("mate", "mt")
.add( Expression.eqProperty("kt.name", "mt.name") )
.list();
(createAlias())并不会创建一个Criteria的新实例。)
请注意,前面两个查询中Cat实例所持有的kittens集合类并没有通过criteria预先过滤!如果你希望只返回满足条件的kittens,你必须使用returnMaps()。
List cats = sess.createCriteria(Cat.class)
.createCriteria("kittens", "kt")
.add( Expression.eq("name", "F%") )
.returnMaps()
.list();
Iterator iter = cats.iterator();
while ( iter.hasNext() ) {
Map map = (Map) iter.next();
Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);
Cat kitten = (Cat) map.get("kt");
}
5、动态关联对象获取(Dynamic association fetching)
可以在运行时通过setFetchMode()来改变关联对象自动获取的策略。
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "Fritz%") )
.setFetchMode("mate", FetchMode.EAGER)
.list();
这个查询会通过外连接(outer join)同时获得 mate和kittens。
6、根据示例查询(Example queries)
net.sf.hibernate.expression.Example类允许你从指定的实例创造查询条件。
Cat cat = new Cat();
cat.setSex('F');
cat.setColor(Color.BLACK);
List results = session.createCriteria(Cat.class)
.add( Example.create(cat) )
.list();
版本属性,表示符属性和关联都会被忽略。默认情况下,null值的属性也被排除在外。
You can adjust how the Example is applied. 你可以调整示例(Example)如何应用。
Example example = Example.create(cat)
.excludeZeroes() //exclude zero valued properties
.excludeProperty("color") //exclude the property named "color"
.ignoreCase() //perform case insensitive string comparisons
.enableLike(); //use like for string comparisons
List results = session.createCriteria(Cat.class)
.add(example)
.list();
你甚至可以用示例对关联对象建立criteria。
List results = session.createCriteria(Cat.class)
.add( Example.create(cat) )
.createCriteria("mate")
.add( Example.create( cat.getMate() ) )
.list();
发表评论
-
Weblogic的boot.properties文件位置变了
2015-03-24 10:57 1389从10.3.2之后boot.properties文件不再位 ... -
Tomcat启动时报错:java.net.BindException: Permission denied <null>:80
2013-11-09 22:52 2245问题描述:Tomcat启动时报一系列错误: 问题1: ... -
Weblogic启动慢解决方法
2013-09-06 09:08 14820添加 启动参数 : -Xms256m -Xmx ... -
如何在eclipse中安装Eclipse SQL Explorer
2012-02-24 00:19 2732About Eclipse SQL Explorer ... -
用Lucene检索数据库
2012-02-08 18:04 26631.写一段传统的JDBC程序,讲每条的用户信息从数据库读 ... -
手把手教你如何修改Eclipse中所使用的Tomcat的内存大小
2011-07-13 11:43 1429最近在开发新项目的时候,由于用到缓存比较多,导致Eclipse ... -
WINE QQ 2009教程 看很多人还为QQ着急
2011-04-17 14:29 1403一、安装好 Wine 1.2(1.2 ... -
程序员需要具备的基本技能
2011-03-21 21:19 1117软件开发是一个跨度 ... -
为什么程序员得到的报酬与他们的生产力不成正比
2011-03-21 21:18 1338编者按:原文作者J ... -
经验丰富的程序员和代码行数
2011-03-21 21:15 1448编者按:原文作者John D. Cook是一位数学教授、程序 ... -
10句编程箴言,每个程序员都应该知道
2011-03-21 21:11 950所谓谚语,就是用言简意赅、通俗易懂的方式传达人生箴言 ... -
项目管理工具Redmine安装
2011-02-28 10:47 1662关键字: redmine 可以选择直接在http:/ ... -
JavaScript 字符串转换数字
2011-01-06 17:34 1125方法主要有三种 转换函数、强制类型转换、利用js变量弱类 ... -
java使用jdbc轻松连接访问access
2010-11-29 14:50 1205import java.sql.Connection; ... -
java读取文件大全
2010-10-28 16:53 12221、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内 ... -
weblogic启动受管服务器的一个错误
2010-10-09 21:18 3060错误如下: Server is Running in ... -
对Java编程思想的忠告
2010-09-20 15:23 1032编写Java程序的注意事项,对Java编程思想的忠告。 ... -
Tomcat调整内存所能容纳的最大值
2010-08-03 21:41 1639以下为网络摘抄: Tom ... -
weblogic中如果使用80端口和根目录作为应用的默认目录
2010-07-23 19:29 2295使用根目录作为默认目录,需要新建一个工程可以叫做index,然 ... -
Hibernate对各数据库的连接方言
2010-07-20 09:56 1135<session-factory> < ...
相关推荐
Hibernate中的Criteria API是一种用于执行动态查询的机制,它允许开发者在运行时...在实际项目中,可以根据需求选择使用HQL(Hibernate Query Language)或Criteria API,两者各有优势,选择取决于具体场景和团队偏好。
《Hibernate查询条件查询详解》 Hibernate作为Java领域中广受欢迎的对象关系映射(ORM)框架,极大地简化了数据库操作。其强大的查询能力是其核心功能之一。本篇将深入探讨Hibernate的条件查询,帮助开发者更好地...
Criteria查询是Hibernate提供的API,与传统的HQL(Hibernate Query Language)查询相比,它更具有动态性和灵活性。Criteria查询允许你在运行时构建查询,这在处理动态或复杂的查询需求时尤其有用。下面我们将深入...
Hibernate的Criteria API是一种灵活、强大的查询方式,它允许开发者构建复杂的查询条件,而不必直接编写SQL语句。Criteria API基于面向对象的方式进行查询构建,可以动态地添加各种查询条件,包括等值比较、范围查询...
在Java持久层框架...然而,对于非常复杂的查询,HQL(Hibernate Query Language)可能会更适合,因为它更接近SQL,能更好地表达复杂的查询逻辑。理解并熟练运用Criteria API,能有效提升在Hibernate中的查询效率。
Hibernate 中 Criteria 的完整用法是 Hibernate 框架中的一种查询机制,允许开发者灵活地根据查询条件来组装查询语句。在使用 Spring 和 Hibernate 进行开发时,Criteria 的优势尤为明显。本文将对 Hibernate 中 ...
CriteriaQuery<YourEntityName> criteriaQuery = builder.createQuery(YourEntityName.class); Root<YourEntityName> root = criteriaQuery.from(YourEntityName.class); TypedQuery<YourEntityName> typedQuery ...
Criteria API基于CriteriaQuery接口,提供了丰富的查询选项,包括排序、分页、聚合函数等,这使得开发者能够更加灵活地进行数据检索。 ### 使用Criteria进行基本查询 在给定的部分内容中,首先展示的是如何使用...
Hibernate作为一款优秀的Java持久层框架,提供了多种方式来进行数据库操作,其中包括HQL(Hibernate Query Language)、Criteria API以及Native SQL等。其中,Criteria API由于其简洁的API设计和强大的查询能力,受...
Hibernate提供了一种灵活的查询语言——HQL(Hibernate Query Language),以及 Criteria 查询和 Criteria API,它们都可以用来获取数据表中的特定字段。 二、Hibernate配置 在使用Hibernate进行查询前,首先需要...
Criteria 查询机制主要包括 QBE(Query By Example)、QBC(Query By Criteria)和 HQL(Hibernate Query Language)三种方式。 QBE(Query By Example) QBE 是一种基于示例的查询机制,它可以根据一个示例对象来...
在实际应用中,你还可以结合Hibernate的 Criteria 查询、Criteria API 或者 JPA 的 Query API 来实现更复杂的聚合查询,如带条件的聚合、子查询等。 总之,Hibernate提供的聚合函数使得在Java应用程序中进行数据...
- **Criteria API**:是Hibernate提供的一种灵活且强大的查询方式,允许开发者通过程序化的方式来构建查询条件。 - **Order**:用于表示排序规则的对象,包含升序(asc)和降序(desc)两种类型。 - **Criteria....
在Java的持久层框架Hibernate中,Criteria API是一个强大的查询工具,它可以用来替代传统的SQL或HQL(Hibernate Query Language)查询,以实现更加面向对象的数据库交互。Criteria API的设计旨在屏蔽不同数据库之间...
本篇文章将深入探讨Hibernate中的三种主要查询方式:HQL(Hibernate Query Language)、Criteria API以及原生SQL。 一、HQL(Hibernate Query Language) HQL是Hibernate提供的一种面向对象的查询语言,它类似于SQL...
本文将深入探讨Hibernate的查询方式,特别聚焦于HQL(Hibernate Query Language)查询方式以及QBC(Query By Criteria)查询方式,旨在帮助读者全面理解并掌握这些核心功能。 #### HQL查询方式:面向对象的查询语言...
总的来说,Hibernate的`Criteria`、`Query`以及QBC(Query By Criteria)提供了灵活且强大的查询手段,它们不仅支持基本的单表查询,还能处理复杂的联表、分页、参数绑定和统计需求,是Java开发者进行数据库操作的...
与HQL(Hibernate Query Language)相比,Criteria API更易于理解和使用,尤其在处理复杂的查询条件时。它通过对象来表示查询条件,使得代码更具有可读性和可维护性。 ### 2. 创建Criteria查询 首先,我们需要从`...
Criteria API是Hibernate提供的另一种查询方式,它提供了更加面向对象的API,可以动态构建查询条件。下面是一个使用Criteria API的例子: ```java Session session = sessionFactory.openSession(); Criteria ...
总结,使用Hibernate在查询条件中创建List集合是Java开发中常见的操作,无论是通过HQL还是Criteria API,都能灵活、高效地处理复杂的查询需求。在实际开发中,我们应该根据项目需求和团队习惯选择合适的查询方式,并...