比较日期hibernate条件查询

时间:2012-09-13 11:13:46

标签: hibernate date criteria equality

我跟随ceode去野营“创意”课程的所有领域。有些字段是日期。

Criteria creativeCriteria = getSession().createCriteria(PcmCreative.class);
    for(Entry<String,Object> mapEntry : propValMap.entrySet()){
        if(mapEntry.getValue() == null){
            creativeCriteria.add(Restrictions.isNull(mapEntry.getKey()));
            //creativeCriteria.add(Restrictions.disjunction().add(Restrictions.isNull(mapEntry.getKey())).add(Restrictions.eq(mapEntry.getKey(),mapEntry.getValue())));
        }else{
            creativeCriteria.add(Restrictions.eq(mapEntry.getKey(),mapEntry.getValue()));
        }
    }
    creativeCriteria.createAlias("campaign", "c").add(Restrictions.eq("c.campaignNumber", campaignNumber));
    creativeCriteria.setProjection(Projections.rowCount());
    return (Integer)creativeCriteria.uniqueResult();

我使用以下代码格式化我的日期:

   String strDate = DateUtils.convertDateToString((Date)     fieldValue,CmtConstants.CMTDATE_MYSQL_COMPARISION_FORMAT);
//fieldValue = DateUtils.convertStringToDate(strDate,CmtConstants.CMTDATE_MYSQL_COMPARISION_FORMAT);

其中CMTDATE_MYSQL_COMPARISION_FORMAT是'yyyy-mm-dd'。

但是比较失败了。作为DateUtils.convertStringToDate返回的日期,它在内部使用SimpleDateFormat.parse方法,也包含GMT字符串,我认为在hibernate中无法实现等级相等。如何删除GMT字符串并获取仅包含日期和时间部分的日期?

1 个答案:

答案 0 :(得分:0)

在添加日期格式之前,您需要编写实用程序来转换日期格式,如下所示。

 private java.sql.Date getSQLDate(Object dateObj) {

    SimpleDateFormat sdf = null;
    try {

        sdf = new SimpleDateFormat("yyyy-mm-dd");
        java.util.Date utilDate = sdf.parse((String) dateObj);
        if (utilDate == null) {
            return null;
        } else {
            return new java.sql.Date(utilDate.getTime());
        }

    } catch (ParseException parseEx) {
       }

}