1

Hibernate 不支持 Oracle 的 TIMESTAMPDIFF

它在 Oracle 中出现错误,但在 MySql 中运行良好

**Query** :select app from Application app where app.id not in ( select aml.referenceId from AuditMailLog aml  where app.id = aml.referenceId and aml.event = 'application_expiry_reminder' and aml.referenceTableName = 'application' ) and TIMESTAMPDIFF(DAY, created_date, CURRENT_TIMESTAMP()) >= 30 and status in (0,1)

谁能告诉我有什么替代方法?

4

2 回答 2

0

这是因为 Oracle 本身不支持该timestampdiff()功能。

timestampdiff()在许多数据库中都可用,但在 Oracle、DB2 和 Postgres 中都不可用。

甚至JDBC 规范也列出timestampdiff()了它强烈主张 JDBC 驱动程序应通过转义语法{fn timestampdiff(x,y,z)}支持的功能,但不幸的是,对这些功能的支持实际上非常不完整。

在 Oracle 中解决此问题的方法是使用-运算符减去时间戳,生成一个间隔,然后使用该extract()函数将其字段分开。

这里有更多信息:

https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm#BABBICGH

于 2019-05-17T14:03:38.763 回答
-1

您可以DetachedCriteria用于查询和Restrictions.sqlRestrictionSQL 函数。

于 2012-09-27T23:30:03.273 回答