如何比较 HIBERNATE 查询中的时间戳?
How to compare timestamp in HIBERNATE query?
我从数据库中检索了一个时间戳值,然后将其与当前时间戳进行比较。我实际上想检索过去两个小时登录的人的数据。不幸的是,我正面临这个错误。请帮助我,伙计们。我会感谢你的。我一直坚持这段代码。
我的查询如下。
super.findByHibernateQuery(LogSession.class, "SELECT ls from LogSession ls, SysUser su where ls.startTime > " + timestamp + " and ls.eventId = " + eventId + " and ls.status= '" + status + "' and su.userType like '%" + userType + "%' and su.userId = ls.userId ");[enter image description here][1]
这是我得到的错误。
org.hibernate.hql.ast.QuerySyntaxException:意外标记:04 靠近第 1 行,第 128 列 [SELECT ls 来自 com.ideacrossing.skild.hbm.LogSession ls,com.ideacrossing.skild.hbm.SysUser su 其中 ls.startTime > 2020 -05-04 04:08:25.0 and ls.eventId = 1 and ls.status= 'Login' and su.userType like '%Contestant%' and su.userId = ls.userId]
在 org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)
在 org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)
在 org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
在 org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:258)
在 org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
在 org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
在 org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:77)
在 org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:56)
在 org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
在 org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
在 org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
在 org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
在 com.ideacrossing.skild.impl.SessionImpl.findByHibernateQuery(SessionImpl.java:126)
在 com.ideacrossing.skild.dao.BaseObjectDAO.findByHibernateQuery(BaseObjectDAO.java:210)
在 com.ideacrossing.skild.dao.LogSessionDAO.getContestantLogSessionByStatus(LogSessionDAO.java:55)
在 com.ideacrossing.reports.bo.ContestantReportBO.getActiveSessions(ContestantReportBO.java:228)
在 com.ideacrossing.admin.action.Reports.activeSessionsJson(Reports.java:1769)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:497)
在 ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:899)
在 ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1544)
在 ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)
在 com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:96)
在 com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:88)
在 ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1620)
在 ognl.ASTMethod.getValueBody(ASTMethod.java:91)
在 ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
在 ognl.SimpleNode.getValue(SimpleNode.java:258)
在 ognl.Ognl.getValue(Ognl.java:470)
在 ognl.Ognl.getValue(Ognl.java:434)
在 com.opensymphony.xwork2.ognl.OgnlUtil$3.execute(OgnlUtil.java:371)
在 com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecuteMethod(OgnlUtil.java:423)
在 com.opensymphony.xwork2.ognl.OgnlUtil.callMethod(OgnlUtil.java:369)
在 com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:436)
在 com.opensymphony.xwork2.DefaultActionInvocation.invokeAction 仅 (DefaultActionInvocation.java:291)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
在 org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:253)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:260)
在org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(注解ValidationInterceptor.java:52)
在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:139)
在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:134)
在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:134)
在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(静态ParametersInterceptor.java:199)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:69)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:115)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:88)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:246)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:99)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:139)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:157)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:174)
在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:123)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:171)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:201)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:193)
在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
在 org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:53)
在 org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:577)
在 org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:81)
在 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:143)
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
在 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526)
在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482)
在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
在 java.lang.Thread.run(Thread.java:745)
您收到错误是因为您没有将时间戳用引号引起来,因此当 sql 命中时间戳中的 space 时,它不知道该怎么做并抛出错误。在时间戳部分周围添加单引号,如下所示:
super.findByHibernateQuery(LogSession.class, "SELECT ls from LogSession ls, SysUser su where ls.startTime > '" + timestamp + "' and ls.eventId = " + eventId + " and ls.status= '" + status + "' and su.userType like '%" + userType + "%' and su.userId = ls.userId ");[enter image description here][1]
我从数据库中检索了一个时间戳值,然后将其与当前时间戳进行比较。我实际上想检索过去两个小时登录的人的数据。不幸的是,我正面临这个错误。请帮助我,伙计们。我会感谢你的。我一直坚持这段代码。 我的查询如下。
super.findByHibernateQuery(LogSession.class, "SELECT ls from LogSession ls, SysUser su where ls.startTime > " + timestamp + " and ls.eventId = " + eventId + " and ls.status= '" + status + "' and su.userType like '%" + userType + "%' and su.userId = ls.userId ");[enter image description here][1]
这是我得到的错误。
org.hibernate.hql.ast.QuerySyntaxException:意外标记:04 靠近第 1 行,第 128 列 [SELECT ls 来自 com.ideacrossing.skild.hbm.LogSession ls,com.ideacrossing.skild.hbm.SysUser su 其中 ls.startTime > 2020 -05-04 04:08:25.0 and ls.eventId = 1 and ls.status= 'Login' and su.userType like '%Contestant%' and su.userId = ls.userId] 在 org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31) 在 org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24) 在 org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59) 在 org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:258) 在 org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157) 在 org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111) 在 org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:77) 在 org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:56) 在 org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72) 在 org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133) 在 org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112) 在 org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623) 在 com.ideacrossing.skild.impl.SessionImpl.findByHibernateQuery(SessionImpl.java:126) 在 com.ideacrossing.skild.dao.BaseObjectDAO.findByHibernateQuery(BaseObjectDAO.java:210) 在 com.ideacrossing.skild.dao.LogSessionDAO.getContestantLogSessionByStatus(LogSessionDAO.java:55) 在 com.ideacrossing.reports.bo.ContestantReportBO.getActiveSessions(ContestantReportBO.java:228) 在 com.ideacrossing.admin.action.Reports.activeSessionsJson(Reports.java:1769) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:497) 在 ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:899) 在 ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1544) 在 ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68) 在 com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:96) 在 com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:88) 在 ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1620) 在 ognl.ASTMethod.getValueBody(ASTMethod.java:91) 在 ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) 在 ognl.SimpleNode.getValue(SimpleNode.java:258) 在 ognl.Ognl.getValue(Ognl.java:470) 在 ognl.Ognl.getValue(Ognl.java:434) 在 com.opensymphony.xwork2.ognl.OgnlUtil$3.execute(OgnlUtil.java:371) 在 com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecuteMethod(OgnlUtil.java:423) 在 com.opensymphony.xwork2.ognl.OgnlUtil.callMethod(OgnlUtil.java:369) 在 com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:436) 在 com.opensymphony.xwork2.DefaultActionInvocation.invokeAction 仅 (DefaultActionInvocation.java:291) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252) 在 org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:253) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176) 在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:260) 在org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(注解ValidationInterceptor.java:52) 在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:139) 在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:134) 在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:134) 在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(静态ParametersInterceptor.java:199) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:69) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:115) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:88) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:246) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:99) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:139) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:157) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:174) 在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:123) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:171) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:201) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:193) 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247) 在 org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:53) 在 org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:577) 在 org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:81) 在 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:143) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 在 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:745)
您收到错误是因为您没有将时间戳用引号引起来,因此当 sql 命中时间戳中的 space 时,它不知道该怎么做并抛出错误。在时间戳部分周围添加单引号,如下所示:
super.findByHibernateQuery(LogSession.class, "SELECT ls from LogSession ls, SysUser su where ls.startTime > '" + timestamp + "' and ls.eventId = " + eventId + " and ls.status= '" + status + "' and su.userType like '%" + userType + "%' and su.userId = ls.userId ");[enter image description here][1]