0

我有一些查询,例如

SELECT * FROM JobTable 
WHERE isnull(retryCount,0)<3 
AND updatedOn < dateadd(MI,-5,getdate())

如何将其转换为 Criteria api 调用?使用标准的要点是如果字段名称将被更改,则允许重构。

对于简单的事情,这看起来像

criteria.add(Restrictions.lt(JobTable.RETRYCOUNT_FULL, 3));

但是我的情况呢?

criteria.add(Restrictions.lt(JobTable.UPDATEON_FULL, <???>);
criteria.add(Restrictions.lt( <someexpression(JobTable.RETRYCOUNT_FULL)> , 3));
4

2 回答 2

0

我不确定正确的名称,但 hibernate 有一些映射到方言函数的标准函数。它们可以像这样使用

Projections.sqlFunction("dateadd", Projections.property("property"), Hibernate.dateTime);
于 2012-08-14T08:21:11.027 回答
0

Hibernate Criteria API 具有Restrictions.sqlRestriction功能。在这些函数中,您可以按照自己喜欢的方式编写 SQL,而 Hibernate 会将其嵌入到您的 SQL 中。

criteria.add(Restrictions.sqlRestriction("isnull({alias}" + JobTable.RETRYCOUNT_FULL + ", 0) < ?", 3, new IntegerType());  
于 2012-08-14T08:33:19.323 回答