日期问题上的休眠限制

时间:2014-03-05 16:44:00

标签: java hibernate hibernate-criteria

我在休眠标准限制方面遇到问题。我在db2表中有数据为2014-03-05 20:07:33我试图根据以下标准获取数据:

hibernateCriteria.add(Restrictions.ge("eventTs",
            getLowerBoundDate(adminReportsBeanDTO.getFromDate())));
    hibernateCriteria.add(Restrictions.le("eventTs",
            getUpperBoundDate(adminReportsBeanDTO.getToDate())));
public static Date getLowerBoundDate(Date fromDate) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(fromDate);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal.getTime();
}

/**
 * 
 * @param fromDate
 * @return
 */
public static Date getUpperBoundDate(Date toDate) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(toDate);
    cal.set(Calendar.HOUR_OF_DAY, 23);
    cal.set(Calendar.MINUTE, 59);
    cal.set(Calendar.SECOND, 59);
    cal.set(Calendar.MILLISECOND, 999);
    return cal.getTime();
}

从日期开始截至2014年3月5日00:00:00 IST 2014年至今日3月5日23:59:59 IST 2014

我在表格中有上述日期的记录,但没有显示。但该报告显示的是下一个日期6月3日。

这是我的休眠标准

CriteriaImpl(com.gtech.lsp.beans.Audit:this[][eventTs>=Wed Mar 05 00:00:00 IST 2014,            eventTs<=Wed Mar 05 23:59:59 IST 2014])

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

看起来你正在比较不同时区的日期!您的Java日历在印度时区(IST)中设置。数据库中的日期怎么样? 如果这是您的数据库时区,请尝试将日历时区设置为GMT:

TimeZone tz = TimeZone.getTimeZone("GMT");
cal.setTimeZone(tz);