2

データベースにDATETIMEとして定義された列notification_dateがあります。

ユーザーフィルターを適用すると、日付のみが取得されます。だから私はJavaを使ってデータと時間として変換しています。たとえば、userSearchDateが「2012-09-26」の場合。最終的に変換される日付と時刻の形式は、「2012-09-2617:34:00」になります。

equal、Less than、Greater than、detweenのような日付フィルター操作を検索したい場合、Hibernate基準Query for Greater thanandLess操作を使用して適切な結果を取得できません。

使用したコード

crit.add(Restrictions.gt("notificationDate",notificationVO.getNotificationDate()));

条件により制限が変わります

日付のみを比較するために、Hibernateで使用できる機能はありますか?

この問題を修正する他のアイデアはありますか?

4

1 に答える 1

1

あなたのコメントから:

ユーザーが2012-09-26を入力し、検索条件が未満の場合、2012-09-26未満のすべての日付が必要です

その場合、制限は次のようになります。

crit.add(Restrictions.lt("notificationDate", notificationVO.getNotificationDate()));

ユーザーが同じ日付を入力し、検索条件が「より大きい」である場合、次の制限を使用します。

crit.add(Restrictions.gt("notificationDate", notificationVO.getNotificationDate()));

もちろん、2012-09-26日付のすべてのエントリを含め、2012-09-2600:00:00より大きい日付と時刻のすべてのエントリを取得します。

于 2012-09-28T08:19:53.160 に答える