0

我正在将 jpa 3.o 与 Hibernate 一起使用。我有一个命名查询:

SELECT COUNT(wt.id) FROM WPSTransaction wt WHERE wt.createdDate>= CURRENT_DATE

WPSTransaction 是我的实体类, createdDate 是我类中的列之一。

它在 Mysql 数据库中运行良好。但是,我正在迁移到 SQL Server 2012,而 SQL Server 似乎没有编译该CURRENT_DATE值。我已经尝试过方法和GETNOW()方法,但没有任何运气。NOW()current_date()CURRENT_TIMESTAMP

4

3 回答 3

2

MS SQL Server不符合此处的标准 - 它不提供current_date关键字。

GETDATE()如链接的文档所示,您必须改为使用 SQL 服务器特定的功能。

因为current_date是规范中的一个关键字,所以您不能只current_date()在 MS SQL 中创建一个用户定义的函数并期望它能够以同样的方式工作。所以不幸的是,您在这里遇到了特定于数据库的代码。

于 2014-06-30T07:52:30.637 回答
1

怎么样:

Query q = entityManager.createQuery("SELECT COUNT(wt.id) FROM WPSTransaction wt WHERE wt.createdDate>= :d");
q.setParam("d", new Date());

不需要特定于数据库的代码。

于 2012-12-15T06:36:24.740 回答
1

在 MS SQL 中返回当前日期的函数是 GETDATE(),所以你的查询应该是

SELECT COUNT(wt.id) FROM WPSTransaction wt WHERE wt.createdDate >= GETDATE()
于 2012-12-14T19:11:53.457 回答