2013-03-08 62 views
3

上工作,我有以下JPQL查詢:休眠JPQL CURRENT_DATE沒有SQL服務器

SELECT x FROM Bla x WHERE x.deadline < CURRENT_DATE 

這適用於MySQL的預期。但SQL Server抱怨CURRENT_DATE無法識別。

我在問自己究竟是什麼問題。然後CURRENT_DATE是一個標準的JPA函數,它應該獨立於底層的RDBMS解析。

此外,Hibernate文檔還有CURRENT_DATE記錄(請參見:http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch11.html#ql-expressions)。

我搜索了一下,發現很多評論告訴我,我將使用CURRENT_DATE()來代替。但這不是JPQL。

那麼爲什麼CURRENT_DATE不工作,解決方案是什麼?

我正在使用Hibernate 4.1.8.Final。

最好的問候, 弗洛裏安使用GETDATE()

SELECT x FROM Bla x WHERE x.deadline < GETDATE() 
+0

8年後,仍然無法工作。 – Hlex 2015-02-28 12:57:28

回答

0

嘗試。而且,這不會帶來可移植性問題。

session.createQuery("SELECT x FROM TABLE_NAME x WHERE x.deadline < :currentDate") 
     .setParameter("currentDate", currentDate) 
     .list(); 

否則,你可以嘗試使用的查詢,而不是current_date()current_date,這是HQL表達的一部分。

+2

但GETDATE()不是JPA標準嗎?這是否也適用於其他數據庫(特別是MySQL)? – 2013-03-11 10:43:46

0

你可以嘗試通過當前的日期作爲參數查詢

+0

這將是一個解決方案,但並不能解釋爲什麼Hibernate忽略了MSSQL的JPA標準。 – 2013-03-13 14:43:32