0

次の hql クエリがあります。

Query query = session.createQuery("from Appointments where datetime < :now");
query.setDate("now", new Date());
listApps = query.list();

今日より前 (昨日、2 日前など) のレコードのみが返されますが、この時刻より前の今日のレコードは返されません。

データベースへの日時は DateTime 型であるため、日付と時刻の両方が含まれます。

このクエリが現在より前の今日のレコードを返さないのはなぜですか?

これは、私のエンティティ内で日時が定義される方法です:

@Temporal(TemporalType.TIMESTAMP)
private Date datetime;
4

1 に答える 1

0

から変更する

query.setDate("now", new Date());

  • query.setTimestamp("now", new Date());

または:

  • query.setParameter("now", new Date());

指定された Date オブジェクトの日付 (時刻は切り捨てられます) を名前付きクエリ パラメータにバインドします。

public Query setDate(String name, Date date);

指定された Date オブジェクトの日付と時刻を名前付きクエリ パラメータにバインドします。

public Query setTimestamp(String name, Date date);
于 2013-09-17T23:57:48.220 に答える