【问题标题】:How to get all records of today date through Hibernate HSQL?如何通过 Hibernate HSQL 获取今天日期的所有记录?
【发布时间】:2014-08-12 19:42:52
【问题描述】:

我正在尝试通过以下 HSQL 查询获取今天日期的所有记录

Query query = session.getNamedQuery("findUsersOrder")
            .setTimestamp("todayDate", date);

db 表中的查询是

@NamedQueries({
    @NamedQuery(name = "findUsersOrder", query = "FROM GroupTweetOrder WHERE gtoAddedDate = :todayDate "),


})

但它返回零记录....

谁能告诉我如何获取当前日期或仅今天日期的所有记录?

更新

严重:java.lang.StringIndexOutOfBoundsException:字符串索引超出 范围:0 在 java.lang.String.charAt(String.java:658) 在 org.hibernate.type.descriptor.java.CharacterTypeDescriptor.wrap(CharacterTypeDescriptor.java:79) 在 org.hibernate.type.descriptor.java.CharacterTypeDescriptor.wrap(CharacterTypeDescriptor.java:33) 在 org.hibernate.type.descriptor.sql.VarcharTypeDescriptor$2.doExtract(VarcharTypeDescriptor.java:66) 在 org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:65) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:269) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:265) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:238) 在 org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:357) 在 org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2701) 在 org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1541) 在 org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1473) 在 org.hibernate.loader.Loader.getRow(Loader.java:1373) 在 org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:640) 在 org.hibernate.loader.Loader.doQuery(Loader.java:850) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289) 在 org.hibernate.loader.Loader.doList(Loader.java:2447) 在 org.hibernate.loader.Loader.doList(Loader.java:2433) 在 org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2263) 在 org.hibernate.loader.Loader.list(Loader.java:2258) 在 org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:470) 在 org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355) 在 org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:196) 在 org.hibernate.internal.SessionImpl.list(SessionImpl.java:1161) 在 org.hibernate.internal.QueryImpl.list(QueryImpl.java:101) 在 com.ccc.spring.dao.GroupDistDAO.fetchTodayGroupOrder(GroupDistDAO.java:82) 在 com.ccc.spring.service.GroupDistService.fetchTodayGroupOrder(GroupDistService.java:40) 在 com.ccc.spring.service.GroupDistService$$FastClassBySpringCGLIB$$a552f952.invoke() 在 org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) 在 org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:711) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 在 org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) 在 org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 在 org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644) 在 com.ccc.spring.service.GroupDistService$$EnhancerBySpringCGLIB$$dbd2ed38.fetchTodayGroupOrder() 在 com.ccc.managedController.TweetDistributionManagedBean.sendGroupTweets(TweetDistributionManagedBean.java:175) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.apache.el.parser.AstValue.invoke(AstValue.java:264) 在 org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278) 在 javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:153) 在 javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) 在 javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) 在 javax.faces.component.UICommand.broadcast(UICommand.java:300) 在 javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) 在 javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) 在 com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 在 com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:722)

2014 年 6 月 23 日下午 3:17:49 com.sun.faces.context.AjaxExceptionHandlerImpl 日志严重:JSF1073:javax.faces.event.AbortProcessingException 被捕获 在处理 INVOKE_APPLICATION 5 期间: UIComponent-ClientId=formcontract:iconOnly, Message=java.lang.StringIndexOutOfBoundsException:字符串索引超出 范围:0 2014 年 6 月 23 日下午 3:17:49 com.sun.faces.context.AjaxExceptionHandlerImpl 日志严重: java.lang.StringIndexOutOfBoundsException:字符串索引超出范围: 0 javax.faces.event.AbortProcessingException: java.lang.StringIndexOutOfBoundsException:字符串索引超出范围: 0 在 javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:182) 在 javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) 在 javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) 在 javax.faces.component.UICommand.broadcast(UICommand.java:300) 在 javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) 在 javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) 在 com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 在 com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:722) 引起: java.lang.StringIndexOutOfBoundsException:字符串索引超出范围: 0 在 java.lang.String.charAt(String.java:658) 在 org.hibernate.type.descriptor.java.CharacterTypeDescriptor.wrap(CharacterTypeDescriptor.java:79) 在 org.hibernate.type.descriptor.java.CharacterTypeDescriptor.wrap(CharacterTypeDescriptor.java:33) 在 org.hibernate.type.descriptor.sql.VarcharTypeDescriptor$2.doExtract(VarcharTypeDescriptor.java:66) 在 org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:65) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:269) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:265) 在 org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:238) 在 org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:357) 在 org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2701) 在 org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1541) 在 org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1473) 在 org.hibernate.loader.Loader.getRow(Loader.java:1373) 在 org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:640) 在 org.hibernate.loader.Loader.doQuery(Loader.java:850) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289) 在 org.hibernate.loader.Loader.doList(Loader.java:2447) 在 org.hibernate.loader.Loader.doList(Loader.java:2433) 在 org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2263) 在 org.hibernate.loader.Loader.list(Loader.java:2258) 在 org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:470) 在 org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355) 在 org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:196) 在 org.hibernate.internal.SessionImpl.list(SessionImpl.java:1161) 在 org.hibernate.internal.QueryImpl.list(QueryImpl.java:101) 在 com.ccc.spring.dao.GroupDistDAO.fetchTodayGroupOrder(GroupDistDAO.java:82) 在 com.ccc.spring.service.GroupDistService.fetchTodayGroupOrder(GroupDistService.java:40) 在 com.ccc.spring.service.GroupDistService$$FastClassBySpringCGLIB$$a552f952.invoke() 在 org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) 在 org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:711) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 在 org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) 在 org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 在 org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644) 在 com.ccc.spring.service.GroupDistService$$EnhancerBySpringCGLIB$$dbd2ed38.fetchTodayGroupOrder() 在 com.ccc.managedController.TweetDistributionManagedBean.sendGroupTweets(TweetDistributionManagedBean.java:175) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.apache.el.parser.AstValue.invoke(AstValue.java:264) 在 org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278) 在 javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:153) ... 31 更多

休眠:选择 grouptweet0_.gto_id 作为 gto1_15_, grouptweet0_.gto_added_date 作为 gto2_15_,grouptweet0_.gto_email_id 作为 gto3_15_, grouptweet0_.gto_group_count 为 gto4_15_, grouptweet0_.gto_send 作为 gto5_15_,grouptweet0_.gto_send_date 作为 gto6_15_,grouptweet0_.gto_user_active 作为 gto7_15_, grouptweet0_.gto_user_id 作为 gto8_15_ 来自 subodhc_ccc.group_tweet_order grouptweet0_ 其中 grouptweet0_.gto_added_date>=?和 grouptweet0_.gto_added_date

【问题讨论】:

  • gtoAddedDate字段/date变量有哪些类型?它们中的任何一个是否包含可能与另一个不同的时间?
  • gtoAddedDate 是时间戳类型的 Db 列

标签: java hibernate jpa orm hsqldb


【解决方案1】:

您可以使用 JodaTime 库充分利用 Data 函数。您也可以使用普通的 Java 6 或 7 来完成,但要在午夜获取当天的时间戳会做更多的工作。

使用 JodaTime,您可以这样做:

@NamedQueries({
@NamedQuery(name = "findUsersOrder", query = "FROM GroupTweetOrder WHERE gtoAddedDate >= :todayAtMidnight and gtoAddedDate < :tomorrowAtMidnight")
})

DateTime todayAtMidnight = new DateTime().withTimeAtStartOfDay();
DateTime tomorrowAtMidnight = todayAtMidnight.plusDays(1);

Query query = session.getNamedQuery("findUsersOrder")
        .setTimestamp("todayAtMidnight", todayAtMidnight.toDate())
        .setTimestamp("tomorrowAtMidnight", tomorrowAtMidnight.toDate());

【讨论】:

  • 我收到此异常严重:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0
  • 你需要发布完整的堆栈跟踪,否则很难跟踪发生了什么。
  • 添加了完整的堆栈跟踪
  • 您有一个空的 CHAR 字段,该字段映射到一个字符串,它可能应该包含一个字母条目或 null。在您的情况下,它返回一个空字符串。
  • 尝试在您的数据库 sql 控制台中运行查询,看看它会获取什么结果。
猜你喜欢
  • 2021-12-01
  • 1970-01-01
  • 2020-09-28
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 2022-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多