我想编写一个 Criteria 查询,它将执行以下操作:
SELECT a, b FROM t WHERE a + b < 10
这可以使用 Criteria API 吗?
我想编写一个 Criteria 查询,它将执行以下操作:
SELECT a, b FROM t WHERE a + b < 10
这可以使用 Criteria API 吗?
是的 。您可以使用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 属性名称。