Как сравнить временную метку в запросе HIBERNATE? - PullRequest
0 голосов
/ 04 мая 2020

У меня есть одно значение метки времени, которое я извлекаю из базы данных, а затем сравниваю с текущей меткой времени. Я на самом деле хочу получить данные людей, которые вошли в систему за последние два часа. К сожалению, я сталкиваюсь с этой ошибкой. Пожалуйста, помогите мне, ребята. Я буду благодарен вам. Я застрял в этом коде. Мой запрос приведен ниже.

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 и ls.eventId = 1 и ls.status = 'Login' и su.userType, например '% Contestant%', и 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.lmpl.hl. (QueryTranslatorImpl. java: 111) в org.hibernate.engine.query.HQLQueryPlan. (HQLQuery План. 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.mpl.Ill. java: 1623) в com.ideacrossing.skild.impl.SessionImpl.findByHibernateQuery (SessionImpl. java: 126) в com.ideacrossing.skild.dao.BaseObjectDAO.findByHibernateQuery (BaseObjectDAO. java 210): 210) .ideacrossing.skild.dao.LogSessionDAO.getContestantLogSessionByStatus (LogSessionDAO. java: 55) в com.ideacrossing.reports.bo.ContestantReportBO.getActiveSessions (ContestantReportBO. java: 228) в com.ideacactioningadad. .activeSessions Json (отчеты. java: 1769) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMeth odAccessorImpl. java: 62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl. java: 43) в java .lang.reflect.Method.invoke (Метод. java: 497) во время работы .invokeMethod (OgnlRuntime. java: 899) в ognl.OgnlRuntime.callApp ProperMethod (OgnlRuntime. java: 1544) в ognl.ObjectMethodAccessor.callMethod (ObjectMethodAccessor.). accessor.XWorkMethodAccessor.callMethodWithDebugInfo (XWorkMethodAccessor. java: 96) в com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod (XWorkMethodAccessl. 1620) в ognl.ASTMethod.getValueBody (ASTMethod. java: 91) в ognl.SimpleNode.evaluateGetValueBody (SimpleNode. java: 212) в ognl.SimpleNode.getValue (SimpleNode. java: 25). 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.inctionAction * *. ) в com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly (DefaultActionInvocation. java: 291) в com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation. java: 252) в org. debugging.DebuggingInterceptor. перехват (DebuggingInterceptor. java: 253) в com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation. java: 247) в com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept (DefaultWorks). в com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor. java: 98) в com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation. java: 247) в com.oporintor .doIntercept (ValidationInterceptor. java: 260) в орг. . 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): 247) .xwork2.interceptor.ParametersInterceptor. . java: 247) в com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept (ParametersInterceptor. java: 134) в com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor. java): на 1068 * com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation. java: 247) в com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept (StaticParametersInterceptor. java: 199) в com.opensynocef. invoke (DefaultActionInvocation. java: 247) в орг. 247) at or. .struts2.interceptor.CheckboxInterceptor.intercept (CheckboxInterceptor. java: 88) в com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation. java: 247) в орг. apache .struts2.interceptor.Fileorp. (FileUploadInterceptor. java: 246) в com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation. java: 247) в com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept (ModelDriven 1084) com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionIn призвание. java: 247) в com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept (ScopedModelDrivenInterceptor. java: 139) в com.opensymphony.xwork2.DefaultActionInvocation.invoke * по умолчанию. .opensymphony.xwork2.interceptor.ChainingInterceptor.intercept (ChainingInterceptor. java: 157) в com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation. java: 247) в com.opensymphony.xordoInterter (PrepareInterceptor. java: 174) в com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept (MethodFilterInterceptor. java: 98) в com.opensymphony.xwork2.DefaultActionInvocation.invoke * по умолчанию7ction 10). org. apache .struts2.interceptor.I18nInterceptor.intercept (I18nInceptceptor. java: 123) в com.opensymphony.xwork2. DefaultActionInvocation.invoke (DefaultActionInvocation. java: 247) в org. apache .struts2.interceptor.ServletConfigInterceptor.intercept (ServletConfigInterceptor. java: 171) в com.opensymphony.xwork2.DefationInvoctionActionIn *: 247) в com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept (AliasInterceptor. java: 201) в com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation. java: 247) в com.opensymphony .interceptor.ExceptionMappingInterceptor.intercept (ExceptionMappingInterceptor. java: 193) в com.opensymphony.xwork2.DefaultActionInvocation.invoke (DefaultActionInvocation. java: 247) в орг. apache .struts2.factory.StrutsProего . java: 53) в орг. apache .struts2.dispatcher.Dispatcher.serviceAction (Диспетчер. java: 577) в орг. apache .struts2.dispatcher.ExecuteOperations.executeAction (ExecuteOperations. java : 81) в орг. apache .struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doF ilter (StrutsPrepareAndExecuteFilter. java: 143) в орг. apache .catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain. java: 239) в орг. java: 206) в орг. apache .catalina.core.StandardWrapperValve.invoke (StandardWrapperValve. java: 219) в орг. apache .catalina.core.StandardContextValve.invoke (StandardContextValve. * 11 106) в орг. apache .catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase. java: 502) в орг. apache .catalina.core.StandardHostValve.invoke (StandardHostValve. java: 142) в орг. . 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) в орг. apache .catalina.connector.CoyoteAdapter.service (CoyoteAdapter. java: 518) в орг. apache .coyote.http11 .AbstractHttp11Processor.proce ss (AbstractHttp11Processor. java: 1091) в орг. apache .coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol. java: 673) в орг. apache .tomcat.util. net .NioEndpoint $ SocketProcessor.doRun (NioEndpoint. java: 1526) в орг. 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) в орг. apache .tomcat.util.thread $as WrappingRunnable.run (TaskThread. java: 61) в java .lang.Thread.run (Тема. java: 745)

1 Ответ

0 голосов
/ 04 мая 2020

Вы получаете сообщение об ошибке, потому что вы не завернули временную метку в кавычки, поэтому, когда sql попадает в пробел во временной метке, он не знает, что делать, и выдает ошибку. Добавьте одинарные кавычки вокруг части метки времени, например:

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]
...