我想在我的Spring/Hibernate應用程序中使用HQL查詢所有客戶記錄,這些記錄在Date1和Date2之間或Date1和Date2之間有LastSeen,所以我在這個HQL查詢中創建了這個HQL查詢存儲庫/ DAO類:HQL查詢兩個日期之間的記錄
sessionfactory.getCurrentSession().createQuery("from Customer c where c.dateAdded BETWEEN '"+startDate+"' AND '"+endDate+"' OR c.lastSeenDate BETWEEN '"+startDate+"' AND '"+endDate+"'").list();
我調試的應用程序來檢查起始日期和結束日期,發現它們發送爲:
開始日期:星期三1月22日1時16分57秒香港時間2014
結束日期:Wed Jan 29 01:16:57 HKT 2014
在DB,我100%肯定有一個記錄至少會這個查詢,因爲這是記錄和DateAdded LastSeen如下:
2014年1月23日15時33分38秒
2014 -01-25 15:33:38
那麼有人可以告訴我我在做什麼錯誤/在這裏失蹤?
我不確定在日期作爲文件傳遞時如何在HQL中處理時區,但是您應該*真正*使用查詢參數而不是字符串連接。 – Guillaume
@Guillaume這是專門解決這個問題還是一般來說? – MChan
@Guillaume將其更改爲sessionfactory.getCurrentSession()。createQuery(「from Customer c where c.dateAdded BETWEEN:startD AND:endD」).setParameter(「startD」,startDate).setParameter(「endD」,startDate).list ();並仍然不會工作:( – MChan