我想在我的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