当前位置: 首页 > 面试题库 >

如何在Oracle数据库的HQL查询中使用当前日期?

慕高格
2023-03-14
问题内容

我正在尝试使用Hibernate 3和Oracle 10编写此查询。

from Alert alert
where alert.expiration > current_date()
order by alert.priority, alert.updated, alert.name

它正在这样创建SQL-

Hibernate: select alert0_.ANNOUNCEMENTS_ID as ANNOUNCE1_1_, alert0_.ANNOUNCEMENT
S_NAME as ANNOUNCE2_1_, alert0_.ANNOUNCEMENTS_PRIORITY as ANNOUNCE3_1_, alert0_.
ANNOUNCEMENTS_EXPIRATION as ANNOUNCE4_1_, alert0_.ANNOUNCEMENTS_UPDATE_DATE as A
NNOUNCE5_1_ from NYC311_ANNOUNCEMENTS alert0_ where (alert0_.ANNOUNCEMENTS_EXPIR
ATION>current_date()) order by  alert0_.ANNOUNCEMENTS_PRIORITY , alert0_.ANNOUNC
EMENTS_UPDATE_DATE , alert0_.ANNOUNCEMENTS_NAME

当显然有完美的括号时,我会收到所有这些古怪的错误,例如“缺少正确的括号”。

甲骨文为何为此大吃一惊?有没有更好的方法来编写我的HQL查询?


问题答案:

不是current_date吗?

Hibernate会将其翻译为适当的方言。

我没有找到真正的“ Hibernate将其翻译成该文档”参考文档,但该表达式通常可以在Hibernate
4.3的HQL表达式中
找到 。

然后是Java Persistence API2.0(JPA)规范,该规范定义了JavaPersistence查询语言(JPQL)的表达式及其含义,例如current_date

4.6.17.2.3日期时间函数functions_returning_datetime:= CURRENT_DATE | CURRENT_TIME |
CURRENT_TIMESTAMP datetime函数返回数据库服务器上当前日期,时间和时间戳的值。



 类似资料:
  • 问题内容: 我需要类似的东西 但是,在H2中不起作用。请指教。 问题答案: 使用 CURRENT_TIMESTAMP

  • 问题内容: 我有一张表(在Oracle 9及更高版本中),在这里我需要使用Hibernate查找给定日期的所有条目。这些条目具有时间戳(数据类型为“ date”)。一些条目有一个时间,其他条目只有一个日期。这不能更改,因为这是我无法更改的其他应用程序的输出。在SQL中,我会按照 获取我想要的日期的所有条目。我想知道如何让Hibernate使用HQL做到这一点。我知道我可以在Hibernate中使用

  • 问题内容: 我正在使用和。我以前在sql中使用过正则表达式,现在是我第一次在HQL中使用它。 这是我的hql,当我不带功能运行它时,它按预期运行。但是我不能用表达式执行它。 它说.. 嵌套的异常是org.hibernate.hql.ast.QuerySyntaxException:意外的AST节点:(靠近第1行,第66列..... 请帮助,如何在hibernate本机查询中使用?或其他替代方法。

  • 我正在使用oracle 10g和hibernate 3.3.2。我以前在sql中使用过正则表达式,现在我第一次在HQL中使用它。 这是我的hql,当我在没有类似regex_的函数的情况下运行它时,它会按预期运行。但我无法用类似正则表达式的表达式执行它。 它说... 嵌套异常是org.hibernate.hql.ast.QuerySynTaxException:意外的AST节点:(靠近第1行,第66

  • 问题内容: 新手提出的另一个问题。我有一个php变量,用于查询数据库的值。它存储在变量$ publish中,当用户单击超链接时,它的值(在数据库中)将更改。 后台发生的事情是我正在查询数据库表中存储在$ publish变量中的某些数据。如果$ publish为空,则会在弹出窗口中添加publish.html的链接。弹出窗口将处理一个表单,并将数据添加到数据库,这意味着$ publish不再为空。我

  • 问题内容: 在我的HQL查询下方找到 该查询工作正常,但是在此情况下,我想传递userId的值,但无法弄清楚该怎么做。请帮助..!提前致谢..!! 问题答案: 我很简单地将参数添加到HQL __ 在这里,我有硬编码15您可以简单地使用变量代替它