0

私はそれを熟考してきましたが、これが可能であるかどうか疑問に思い始めています.

ユーザーの視点: データのテーブルがあり、1 つの列に日付が含まれています。ユーザーは次のような検索語を入力して、dec12 月中に発生したすべての行を取得できます。

バックエンド: テーブルの表示には jqGrid が使用されます。入力した検索語をサーバーに送信します。サーバーはコードを使用します

Criteria cr = session.createCriteria( DetailedLogEntry.class );
Disjunction disjunction = Restrictions.disjunction();
MatchMode matchMode = MatchMode.ANYWHERE;
disjunction.add( Restrictions.ilike( searchKey.getField(), searchKey.getData(), matchMode ) );
cr.add( disjunction );

検索用語を適用し、データベースのフィールドを表す変数がDetailedLogEntry含まれています。DateTIMESTAMP

searchKey.getData()文字列を返すため、日付オブジェクトと比較すると空のセットになります。

したがって、問題は...できればHibernateを介して、Dateオブジェクトが文字列であるかのように制限を適用することは可能ですか?

4

1 に答える 1

0

それは可能ではありません。Restrictions.between()上限と下限の日付値を使用して指定する必要があります。値から値SimpleDateFormatに変換してから検索を実行するために使用できますか?StringDate

ユーザーが Dec を検索した場合、毎年 12 月のすべてのログ エントリが表示されると思いますか? 「1, Dec」と入力して、毎年 12 月 1 日以降のすべてのログが表示されることを期待できますか? 探している日付の文字列一致の場合は、すべてのデータを jqGrid にロードし、javascript を使用して文字列形式の日付値に基づいてテーブルをフィルター処理する方が簡単な場合があります。

于 2013-01-08T21:55:26.090 に答える