2012-09-13 4 views
0

나는 "creative"클래스의 모든 필드를 campare하기 위해 다음 ceode를 가지고있다. 일부 필드는 날짜입니다.날짜 비교 hiberanate criteria 쿼리

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을 코드를 사용하여 내 날짜를 포맷 :

CMTDATE_MYSQL_COMPARISION_FORMAT은 'YYYY-MM-DD'이다
String strDate = DateUtils.convertDateToString((Date)  fieldValue,CmtConstants.CMTDATE_MYSQL_COMPARISION_FORMAT); 
//fieldValue = DateUtils.convertStringToDate(strDate,CmtConstants.CMTDATE_MYSQL_COMPARISION_FORMAT); 

.

그러나 비교가 실패합니다. 내부적으로 SimpleDateFormat.parse 메서드를 사용하는 DateUtils.convertStringToDate에 의해 반환 된 날짜에는 GMT 문자열도 포함되어 있기 때문에 최대 절전 모드에서는 평등하지 못합니다. 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) { 
     } 

}