4

我有以下 JPQL 查询:

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不起作用,解决方案是什么?

我正在使用休眠 4.1.8.Final。

最好的问候,弗洛里安

4

2 回答 2

1

您可以尝试将当前日期作为参数传递给查询。此外,这不会有可移植性问题。

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

否则,您可以尝试使用current_date()而不是查询current_date,这是 HQL 表达式的一部分。

于 2013-03-12T05:38:37.047 回答
0

尝试使用GETDATE()

SELECT x FROM Bla x WHERE x.deadline < GETDATE()
于 2013-03-08T16:16:30.160 回答