weixin_42418805 2011-02-28 15:53
浏览 273
已采纳

hibernate里面使用 criteria设定时间范围,拿不到数据

*数据库里面 submitTime 是nvarchar(50);sqlserver数据库

[code="java"]

        public Pager findPagerByTime(String startTime,String endTime,int pageSize, int pageNo){
            // startTime是2011-2-2,endTime是2011-3-1
    Session session=getHibernateTemplate().getSessionFactory().openSession();
    Criteria criteria=session.createCriteria(ApplyList.class);
    criteria.add(Restrictions.between("submitTime", startTime, endTime));
    int rowCount=((Integer)criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
    criteria.setProjection(null);

    int startIndex=pageSize*(pageNo-1);
    criteria.addOrder(Order.desc("submitTime"));
    criteria.setFirstResult(startIndex);
    criteria.setMaxResults(pageSize);
    List result=criteria.list();         // 查询不到
    System.out.println("result.size():"+result.size());
    session.close(); 
    return new Pager(pageSize,pageNo,rowCount,result);
}

[/code]

请问这样的查询语句,是哪里出错导致拿不出这个时间范围内的数据呢?

  • 写回答

1条回答 默认 最新

  • fellatioyzx 2011-03-08 11:26
    关注

    这些代码看不出来,不过我可以提点建议。
    看看你的属性怎么设置的,如果时间用String,就都用String,包括POJO里的属性。
    如果是Date类型的,那么在这个方法中不要传String进去,用SimpleDateFormat类的parse(好像是这个名字,抱歉忘了,这个自己查文档没问题吧)方法把字符串转成Date传进去。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?