将Hibernate的MatchMode用于Date对象

时间:2011-07-04 06:26:32

标签: hibernate

我有一个日期“26/12/2007”的Date对象,我想在MySQL数据库“26/12/2007 12:00:00”中与我的日期进行比较。就像我发送日期“26/12/2007”一样,它应该根据MySQL数据库中的日期检索值。

如果我删除此“12:00:00”,它会起作用,但如果我添加“12:00:00” - 则不会产生任何结果。

我正在使用Hibernate Criteria,如

criteria.add(Restrictions.like("dateinsql", date));

我尝试使用

criteria.add(Restrictions.like("dateinsql", date,MatchMode.AnyWhere));

但它仅适用于 String 而非日期

任何解决方案?

1 个答案:

答案 0 :(得分:0)

基本上你需要重新格式化日期变量的模式,即根据指定的日期模式获取其字符串格式,然后将其转换回日期对象。"dd MMM yyyy"是适用于休眠的格式。

试试这个: -

    GregorianCalendar calendar = new GregorianCalendar();
    calendar.setTime(your_input_date);
    calendar.add(Calendar.DATE, 1); // this is needed to if you want to deal with 12 hrs difference.

    SimpleDateFormat sdf    =   new SimpleDateFormat("dd MMM yyyy");
    Date formattedDate = sdf.parse(org.apache.commons.lang.time.DateFormatUtils.format(calendar.getTime(),"dd MMM yyyy"));

使用此格式化日期

criteria.add(Restrictions.like("dateinsql", formattedDate ));

应该可以正常工作。