我在数据库和应用程序中有时间戳我确实有日期.我喜欢以hibernate可以将所有条目与日期匹配的方式编写hibernate标准,而不是时间部分.例如
在DB时间戳中
2011-12-01 15:14:14
在应用程序中,我确实有java.util.Date,它默认具有时间部分.
我的问题是,当我从数据库中搜索条目与以下代码我什么都没得到
DetachedCriteria criteria = DetachedCriteria.forClass(MyClass.class);
criteria.add(Restrictions.like(TIMESTAMP_FIELD, javaUtilDate));
List entries =this.getHibernateTemplate().findByCriteria(criteria);
Run Code Online (Sandbox Code Playgroud)
提前致谢
JMe*_*nik 13
如果您正在寻找按日期范围进行过滤的一般用法(例如,从今天到明天).我这样用它:
YourService.java
Date fromTimestamp = new Date();
Date toTimestamp = new Date();
Date fromDate = DateHelper.getDateWithoutTime(fromTimestamp);
Date toDate = DateHelper.getDateWithoutTime(DateHelper.getTomorrowDate(toTimestamp));
Run Code Online (Sandbox Code Playgroud)
YourDAO.java
criteria.add(Restrictions.ge(TIMESTAMP_FIELD, fromDate));
criteria.add(Restrictions.le(TIMESTAMP_FIELD, toDate));
Run Code Online (Sandbox Code Playgroud)
DateHelper.java
public static Date getDateWithoutTime(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
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();
}
public static Date getTomorrowDate(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, 1);
return cal.getTime();
}
Run Code Online (Sandbox Code Playgroud)
当然 - 每个代码都有重构的空间.
归档时间: |
|
查看次数: |
32896 次 |
最近记录: |