快速业务通道

Hibernate中Criteria的完整用法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
接口的一个实例。

org.hibernate.criterion.Restrictions类 定义了获得某些内置Criterion类型的工厂方法。List cats = sess.createCriteria(Cat.class)    .add( Restrictions.like("name", "Fritz%") )    .add( Restrictions.between("weight", minWeight, maxWeight) )    .list();

约束可以按逻辑分组。

List cats = sess.createCriteria(Cat.class)    .add( Restrictions.like("name", "Fritz%") )    .add( Restrictions.or(      Restrictions.eq( "age", new Integer(0) ),      Restrictions.isNull("age")    ) )    .list(); List cats = sess.createCriteria(Cat.class)    .add( Restrictions.in( "name", new String[] { "Fritz", "Izi", "Pk" } ) )    .add( Restrictions.disjunction()      .add( Restrictions.isNull("age") )      .add( Restrictions.eq("age", new Integer(0) ) )      .add( Restrictions.eq("age", new Integer(1) ) )      .add( Restrictions.eq("age", new Integer(2) ) )    ) )    .list();

Hibernate提供了相当多的内置criterion类型(Restrictions 子类), 但是尤其有用的是可以允许你直接使用SQL。

List cats = sess.createCriteria(Cat.class)    .add( Restrictions.sql("lower({alias}.name) like lower(?)", "Fritz%", Hibernate.STRING) )    .list();

{alias}占位符应当被替换为被查询实体的列别名。

Property实例是获得一个条件的另外一种途径。你可以通过调用Property.forName() 创建一个Property。

Property age = Property.forName("age"); List cats = sess.createCriteria(Cat.class)    .add( Restrictions.disjunction()      .add( age.isNull() )      .add( age.eq( new Integer(0) ) )      .add( age.eq( new Integer(1) ) )      .add( age.eq( new Integer(2) ) )    ) )    .add( Property.forName("name").in( new String[] { "Fritz", "Izi", "Pk" } ) )    .list();

Hibernate中Criteria的完整用法(3)

时间:2011-06-16

3. 结果集排序

你可以使用org.hibernate.criterion.Order来为查询结果排序。

List cats = sess.createCriteria(Cat.class)    .add( Restrictions.like("name", "F%")    .addOrder( Order.asc("name") )    .addOrder( Order.desc("age") )    .setMaxResults(50)    .list(); List cats = sess.createCriteria(Cat.class)    .add( Property.forName("name").like("F%") )    .addOrder( Property.forName("name").asc() )    .addOrder( Property.forName("age").desc() )    .setMaxResults(50)    .list();

4. 关联

你可以使用createCriteria()非常容易的在互相关联的实体间建立 约束。

List cats = sess.createCriteria(Cat.class)    .add( Restrictions.like("name", "F%")    .createCriteria("kittens")      .add( Restrictions.like("name", "F%")    .list();

注意第二个 createCriteria()返回一个新的 Criteria实例,该实例引用kittens 集合中的元素。 接下来,替换形态在某些情况下也是很有用的。

List cats =

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号