我有一些像
这样的查询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));
答案 0 :(得分:0)
我不确定正确的名称,但是hibernate有一些标准函数映射到方言函数。它们可以像这样使用
Projections.sqlFunction("dateadd", Projections.property("property"), Hibernate.dateTime);
答案 1 :(得分:0)
Hibernate Criteria API具有Restrictions.sqlRestriction
个函数。在这些函数中,您可以按照自己喜欢的方式编写SQL,并将Hibernate嵌入到SQL中。
criteria.add(Restrictions.sqlRestriction("isnull({alias}" + JobTable.RETRYCOUNT_FULL + ", 0) < ?", 3, new IntegerType());