Hibernate - 限制两个属性的总和

时间:2013-08-29 06:32:02

标签: hibernate hibernate-criteria

我想写一个Criteria查询,它会做这样的事情:

SELECT a, b FROM t WHERE a + b < 10

这可以使用Criteria API吗?

1 个答案:

答案 0 :(得分:2)

是的。您可以使用Restrictions.sqlRestriction()使用本机SQL定义where子句。

   Integer condition = 10;
   List<Object[]> results = (List<Object[]>)session.createCriteria(someTable.class)
            .add(Restrictions.sqlRestriction("a + b < ?" , condition , StandardBasicTypes.INTEGER ))
            .setProjection(Projections.projectionList()
                   .add(Projections.property("a"))
                   .add(Projections.property("b"))
             )
            .list();

重点:

  • 在返回结果中,列a的值存储在 Object[0],而b存储在Object [1]

  • Restrictions.sqlRestriction()中的输入参数是 数据库中的实际列名,而输入参数在 Projections.property()是映射的java属性名称 实体。