`

Criterion和Criteria

阅读更多

              Hibernate Criterion是Criteria的查询条件。Criteria 提供了add(Criterion criterion)方法来添加查询条件。Criteria 的特点来方便地进行查询条件的组装。

 

              Criteria的常用方法:

 

              1. 创建一个Criteria 实例
            org.hibernate.Criteria接口表示特定持久类的一个查询。Session是 Criteria实例的工厂。
           Criteria crit = sess.createCriteria(Cat.class);
           crit.setMaxResults(50);
           List cats = crit.list();


             2. 限制结果集内容
           一个单独的查询条件是org.hibernate.criterion.Criterion 接口的一个实例。
           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();

 

           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();

           5. 查询示例
           org.hibernate.criterion.Example类允许通过一个给定实例来构建一个条件查询。     

           Cat cat = new Cat();
           cat.setSex('F');
           cat.setColor(Color.BLACK);
           List results = session.createCriteria(Cat.class).add( Example.create(cat) ) .list();

           6. 投影(Projections)、聚合(aggregation)和分组(grouping)
           org.hibernate.criterion.Projections是 Projection 的实例工厂。一般通过调用 
setProjection()应用投影到一个查询。 
           List results = session.createCriteria(Cat.class).setProjection( Projections.rowCount() ).add( Restrictions.eq("color", Color.BLACK) ).list();
           List results = session.createCriteria(Cat.class).setProjection( Projections.projectionList()
          .add( Projections.rowCount() )
          .add( Projections.avg("weight") )
          .add( Projections.max("weight") )
          .add( Projections.groupProperty("color") )).list();

   在一个条件查询中没有必要显式的使用 "group by" 。某些投影类型就是被定义为分组投影,而这些投影类型也出现在SQL的group by子句中。 可以选择把一个别名指派给一个投影,这样可以使投影值被约束或排序所引用。 

          下面是两种不同的实现方式:

           List results = session.createCriteria(Cat.class).setProjection(

Projections.alias( Projections.groupProperty("color"), "colr" ) ).addOrder( Order.asc("colr") ).list();

 

           List results = session.createCriteria(Cat.class).setProjection(

Projections.groupProperty("color").as("colr") ).addOrder( Order.asc("colr") ).list();

               
           alias()和as()方法简便的将一个投影实例包装到另外一个 别名的Projection实例中。简而言之,当你添加一个投影到一个投影列表中时你可以为它指定一个别名:

 

           List results = session.createCriteria(Cat.class)
          .setProjection( Projections.projectionList()
          .add( Projections.rowCount(), "catCountByColor" )
          .add( Projections.avg("weight"), "avgWeight" )
          .add( Projections.max("weight"), "maxWeight" )
          .add( Projections.groupProperty("color"), "color" )
    )
         .addOrder( Order.desc("catCountByColor") )
         .addOrder( Order.desc("avgWeight") )
.list();
        

          List results = session.createCriteria(Domestic.class, "cat")
          .createAlias("kittens", "kit")
          .setProjection( Projections.projectionList()
          .add( Projections.property("cat.name"), "catName" )
          .add( Projections.property("kit.name"), "kitName" )
    )
          .addOrder( Order.asc("catName") )
          .addOrder( Order.asc("kitName") )
.list();

         

分享到:
评论

相关推荐

    Hibernate Criteria用法大全.docx

    Hibernate 提供了操纵对象和相应的 RDBMS 表中可用...Hibernate Session 接口提供了 createCriteria() 方法,可用于创建一个 Criteria 对象,使当您的应用程序执行一个标准查询时返回一个持久化对象的类的实例。

    Criteria使用技巧

    详细介绍了criteria的使用方法和许多相关查询技巧

    Regularity criteria for the Navier-Stokes-Landau-Lifshitz

    Navier-Stokes-Landau-Lifshitz方程组的正则性准则,樊继山,高洪俊,在本文中, 我们研究了Navier-Stokes-Landau-Lifshitz 方程组正则性准则。利用精细的估计,得到了Navier-Stokes-Landau-Lifshitz 方程组的光滑解...

    The EFQM Excellence Model_EN_PDF

    3.5 Model Criteria 10 CRITERION 1 – Leadership 10 CRITERION 2 – Policy and Strategy 12 CRITERION 3 – People 14 CRITERION 4 – Partnerships and Resources 16 CRITERION 5 – Processes 18 CRITERION 6 ...

    Modal Assurance Criterion (MAC):该函数用于计算模态形状之间的模态保证准则 (MAC)-matlab开发

    此函数用于计算和绘制已识别模态振型之间的模态保证准则 (MAC) 矩阵。

    解析在内部循环中Continue外部循环的使用详解

    foreach(var item in items){ foreach(var criterion in criteria) { if (!criterion.IsMetBy(item)) //如果不符合标准 { //那么说明这个item肯定不是要查找的,那么应该在外层循环执行continue操作 } } ...

    The Canny Edge Detector Revisited

    localization, and he derived mathematical expressions for these criteria. Based on these criteria, he claimed that the optimal step edge detector was similar to a derivative of a gaussian. However, ...

    A Bayesian Approach to Array Geometry Design

    CRB criterion and to array beamwidth; we also derive closed-form expressions for the design criteria when the DOA prior is uniform on a sector of angles. We show that optimal arrays have elements on ...

    hibernate3.6API

    org.hibernate.criterion A framework for defining restriction criteria and order criteria. org.hibernate.mapping This package defines the Hibernate configuration-time metamodel. org.hibernate....

    Hibernate_3.6.6_CHM 文档

    org.hibernate.criterion A framework for defining restriction criteria and order criteria. org.hibernate.mapping This package defines the Hibernate configuration-time metamodel. org.hibernate....

    用SSH+DWR+Oracle做的模拟Google搜索

    1、给每行绑定一个鼠标移上和移走事件 onmouseover onmouseout 2、焦点如果从文本框转移动显示的层中 设置了文本框失去焦点事件,目的是让层不显示 3、单元格设置不同样式 一个左对齐,一个右对齐 加一个全局的...

    DESIGN PHILOSOPHY OF AN ISOTROPIC SIX-AXIS SERIAL.pdf

    The kinematic criteria applied so far in manipulator design have been based largely on kinematic solvability, in the sense of allowing for closed-form inverse kinematic solutions. As opposed to this ...

    Markov decision processes associated with two threshold probability criteria (2013年)

    This paper deals with Markov ... Two types of threshold probability criteria are discussed. The first criterion is a probability that a total reward is not greater than a given initial threshold va

    2017美赛A题O奖论文

    determine two most influential criteria, including potential costs and benefits. With the weight of each criterion worked out, our model demonstrates that option 3 is the optimal choice.

    jkwxh.zip_android

    Of spherical harmonics graphic simulation, Maximum Likelihood (ML) criteria and maximum a posteriori (MAP) criterion, matlab development toolbox support vector machine.

    squirrel:一个基于JAVA的持久层包装。依赖于 Spring 的 JdbcTemplate 实现

    注:Hibernate 有冬眠之意,Squirrel ( 松鼠 ) 具有冬眠的习性,项目中众多类名称沿袭自 Hibernate,如 Criteria、Criterion、Restrictions 等。 Query private static Session session; @BeforeClass public static...

    ssh补充资料

    ssh补充资料,PPT,文档,练习等 Hibernate对象条件查询: 查询通过如下三个类获取:  Criteria 代表一次查询  Criterion 代表一个查询条件  Restrictions 产生查询条件的工具类

    strings-inflection:在单数和复数形式的英语名词之间转换

    字符串::变形 变形英语名词和动词。 字符串::拐点提供了名词的英语语调和动词组成。... pluralize ( "criterion" ) # => "criteria"Strings :: Inflection . pluralize ( "vertebra" ) # => "vertebrae"安装将此行添加

    Mechanical Behavior of Materials (1)

    3.7.3 Maximum-Distortion-Energy Criterion (von Mises) 201 3.7.4 Graphical Representation and Experimental Verification of Rankine, Tresca, and von Mises Criteria 201 3.7.5 Failure Criteria for Brittle...

    Mechanical Behavior of Materials (2)

    3.7.3 Maximum-Distortion-Energy Criterion (von Mises) 201 3.7.4 Graphical Representation and Experimental Verification of Rankine, Tresca, and von Mises Criteria 201 3.7.5 Failure Criteria for Brittle...

Global site tag (gtag.js) - Google Analytics