目前,我正在努力获取当天的值 (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)
我怀疑 CAST
或 getdate()
函数不能在 HQL 查询中使用。
如果有任何想法或解决方案,我们将不胜感激。
最佳答案
HQL 使用 current_date()
获取当前日期。
您可以尝试将 getdate()
替换为 current_date()
并检查是否可以解决空指针问题。
关于java - Hibernate 允许 getdate() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62142416/