问题如下:
使用hibernate hql按时间段更新数据,只更改了当天前的数据,当天的数据就不起作用,比如今天所26号,25号及之前的数据可以更新,26号的数据就不起作用。结束时间包含到当前更新时间的。语句如下代码:Query query = session.createQuery("update Object a set a.state = '1' where a.state = '0' and a.createDate >=:start and a.createDate <= :end");
query.setDate("start",start);
query.setDate("end",end);
query.executeUpdate();求解……

解决方案 »

  1.   

    换成查询一样,当天的数据查不出来,来个人指点下……Query query = session.createQuery("from Object a where a.state = '0' and a.createDate >=:start and a.createDate <= :end");
    query.setDate("start",start);
    query.setDate("end",end);
    query.executeUpdate();直接用find("from Object a where a.state = '0' and a.createDate >=? and a.createDate <= ?",new Object[]{start,end});可以查出全部数据,我要疯了
      

  2.   

    注意传入的date要把时,分秒去掉,这样才是当天的最后一秒。不然记录的日期比你参数的时间晚就更新不了。
      

  3.   

    如果你结束日期是5-24日的话,你在传的end参数是5-25或5-24 23:59 :59.
      

  4.   

    问题很诡异的出现在结束时间上,只要是当天的记录,加上and a.createDate <= :end这个条件就是出不来,如果只用结束时间作参数的话,这样写:a.createDate <= :end拿不到当天记录,但如果这样:a.createDate >= :end就可以拿到当天数据,可是不管当天数据createDate是比endDate大还是小都拿到了,特诡异
      

  5.   

    不搞了,绕过hibernate用jdbc完成了,