【发布时间】:2020-06-01 23:17:49
【问题描述】:
目前我正在努力获取当天的值 (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 查询。
如果有任何想法或解决方案,真的很感激。
【问题讨论】:
标签: java sql-server hql