2012-09-13 104 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) { 
     } 

}