java - Hibernate 允许 getdate() 吗?

标签 java sql-server hql

目前,我正在努力获取当天的值 (verifyCount),因此,在我的 SQL Server 查询中,如下所示

select verifyCount from VerifyUser where idNo = 'ABC1234'
and cast(createdDatetime as Date) = cast(getdate() as Date)

在我的 Hibernate 函数中,我使用以下查询

public Integer doInHibernate(Session session) throws HibernateException, SQLException {
  String query = "SELECT vu .verifyCount FROM VerifyUser vu "
                + "WHERE vu .idNo= '"+ idNo+ "'"
                + "AND cast(pl.createdDatetime as Date) = cast(getdate() as Date)";

  Query q = session.createQuery(query);
  return (Integer) q.uniqueResult();
}

但是我遇到了如下错误

2020-06-02 07:02:28.018 [WebContainer : 0] ERROR k.c.m.b.w.AbstractGeneralErrorRequestListener 
  [n/a] - null
  java.lang.NullPointerException: null
  at org.hibernate.dialect.function.CastFunction.render(CastFunction.java:56)
  at org.hibernate.hql.ast.SqlGenerator.endFunctionTemplate(SqlGenerator.java:214)
  at org.hibernate.hql.antlr.SqlGeneratorBase.methodCall(SqlGeneratorBase.java:2325)
  at org.hibernate.hql.antlr.SqlGeneratorBase.simpleExpr(SqlGeneratorBase.java:2699)
  at org.hibernate.hql.antlr.SqlGeneratorBase.expr(SqlGeneratorBase.java:1465)
  at org.hibernate.hql.antlr.SqlGeneratorBase.binaryComparisonExpression(SqlGeneratorBase.java:2940)
  at org.hibernate.hql.antlr.SqlGeneratorBase.comparisonExpr(SqlGeneratorBase.java:1280)
  at org.hibernate.hql.antlr.SqlGeneratorBase.booleanExpr(SqlGeneratorBase.java:910)
  at org.hibernate.hql.antlr.SqlGeneratorBase.booleanOp(SqlGeneratorBase.java:2858)
  at org.hibernate.hql.antlr.SqlGeneratorBase.booleanExpr(SqlGeneratorBase.java:890)
  at org.hibernate.hql.antlr.SqlGeneratorBase.whereExpr(SqlGeneratorBase.java:768)
  at org.hibernate.hql.antlr.SqlGeneratorBase.selectStatement(SqlGeneratorBase.java:191)
  at org.hibernate.hql.antlr.SqlGeneratorBase.statement(SqlGeneratorBase.java:119)
  at org.hibernate.hql.ast.QueryTranslatorImpl.generate(QueryTranslatorImpl.java:240)
  at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:207)
  at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:138)
  at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
  at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
  at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
  at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
  at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
  at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
  at java.lang.reflect.Method.invoke(Method.java:508)
  at org.springframework.orm.hibernate3.HibernateTemplate$CloseSuppressingInvocationHandler.invoke(HibernateTemplate.java:1387)
at com.sun.proxy.$Proxy2575.createQuery(Unknown Source)

我怀疑 CASTgetdate() 函数不能在 HQL 查询中使用。

如果有任何想法或解决方案,我们将不胜感激。

最佳答案

HQL 使用 current_date() 获取当前日期。 您可以尝试将 getdate() 替换为 current_date() 并检查是否可以解决空指针问题。

关于java - Hibernate 允许 getdate() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62142416/

相关文章:

java - 泛型、数组和 ClassCastException

c# - 使用C#循环插入数据

hibernate - Sql到Hql的转换

java - 如何将此 SQL 查询转换为 Hibernate 的 HQL?

mysql - SQL转HQL语法如何?或者我可以直接使用 SQL 但我还想要 JSON 格式的结果吗?

java - (C2) 从哪里来

java - 如何在 Activity 开始时显示数字键盘?

java - 如何在不使用集合的情况下在java中制作列表?

sql-server - 在重复值前面生成数字

c# - 有人大量使用 StreamInsight 吗?