1

我想编写一个 Criteria 查询,它将执行以下操作:

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

这可以使用 Criteria API 吗?

4

1 回答 1

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()中的输入参数是数据库中的实际列名,而 in 中的输入参数 Projections.property()是映射实体的 java 属性名称。

于 2013-08-29T07:32:58.317 回答