0

私はのようないくつかのクエリがあります

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

それをCriteriaAPI呼び出しに変換する方法は?基準を使用するポイントは、フィールド名が変更される場合にリファクタリングを許可することです。

単純なものの場合、これは次のようになります

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

HibernateCriteriaAPIにはRestrictions.sqlRestriction機能があります。これらの関数では、SQLを好きなように記述し、HibernateがそれをSQLに埋め込みます。

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

正しい名前はわかりませんが、休止状態には方言関数にマッピングされた標準関数がいくつかあります。このように使用できます

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