想请教hibernate时间查询的具体代码.数据库字段是mysql的date类型(yy-mm-dd).想查询在某日到某日内的记录.

解决方案 »

  1.   

    用hql语句,mysql没有用过,如果他里面存放的是有时间的话可以直接用字段>开始日期 and 字段<结束日期
    如果没有时间字段>开始日期+"00:00:00 " and 字段<结束日期+" 23:59:59"
      

  2.   

    记不得拉用between ..and....  来查询把
    HQL,SQL都可以的
      

  3.   

    代码如下但是执行到第二行就出错了.错在哪?    
                Session s=HibernateSessionFactory.getSession();
          Query query=s.createQuery("from UserBusiness as a where a.month between '2009-04-01' and '2009-04-07'");
          List result=query.list();
          Iterator it=result.iterator();
          while(it.hasNext()){
                UserBusiness us=(UserBusiness)it.next();
                System.out.println(us.getUserid());
                System.out.println(us.getBusinessId());
                System.out.println(us.getMonth());
          } 
      

  4.   

    Restrictions.ge()
    Restrictions.le()
      

  5.   

    我尝试在代码中try..catch..没有捕捉到,看来异常不是代码的问题.所以把浏览器的异常贴出来:
    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    root cause javax.servlet.ServletException: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V
    org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:295)
    org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
    org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
    org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    root cause java.lang.NoSuchMethodError: org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V
    org.hibernate.hql.antlr.HqlBaseParser.fromClassOrOuterQueryPath(HqlBaseParser.java:1953)
    org.hibernate.hql.antlr.HqlBaseParser.fromRange(HqlBaseParser.java:1564)
    org.hibernate.hql.antlr.HqlBaseParser.fromClause(HqlBaseParser.java:1408)
    org.hibernate.hql.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1130)
    org.hibernate.hql.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:702)
    org.hibernate.hql.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:296)
    org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:159)
    org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:248)
    org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
    org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
    org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
    org.hibernate.engine.query.HQLQueryPlan.<init>(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.lzx.dao.managePersonalInfo.ImpManagePersonalInfoDao.selectBusiness(ImpManagePersonalInfoDao.java:55)
    com.lzx.service.managePersonalInfo.ManagePersonalInfoService.selectBusiness(ManagePersonalInfoService.java:13)
    com.lzx.struts.action.managePersonalInfo.ManagePersonalInfoAction.selectBusiness(ManagePersonalInfoAction.java:46)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
    org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
    org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
    org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
    org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
    org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.5.27 logs.
    --------------------------------------------------------------------------------Apache Tomcat/5.5.27
      

  6.   

    org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/RecognitionException;Lantlr/collections/impl/BitSet;)V 
    从网上查了查外文的文章,有的是引号的问题,没找到答案.
      

  7.   

    问题找出来了,原来真的是语法(Syx什么异常)的错误.从网上粘贴的代码,与开发环境的字符处理不一致造成.看起来正确的代码也会隐藏着格式错误导致编译错误什么时候会出现这样的情况呢?一般从网上直接复制,粘贴的代码会出现字符编码与开发环境不一样,空格占位长度处理不一致导致编译出错.
    这种错误一般很难发现.如何避免呢?首先尽量手写代码.
    其次首先把网上复制的代码保存到记事本以纯文本格式保存,然后再复制出来粘贴到开发环境中.