2012-09-13 73 views
0

我有以下ceode竞选“创意”类的所有领域。有些字段是日期。比较日期hiberanate标准查询

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(); 

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

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字符串以及我认为在休眠期间失败critrai相等的情况。任何soulutions如何删除GMT字符串和获取日期只包含日期和时间部分?

回答

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) { 
     } 

}