2013-06-21 4 views
0

나는 정확히 현재 날짜보다 1 년 적은 날짜를 얻고 HQL에 매개 변수로 전달하는 방법을 찾으려고합니다.Java에서 hql 쿼리에 날짜 전달하기

캘린더를 사용하려고했습니다. 하지만 오라클에 필요한 올바른 날짜 형식으로 변환하는 데 실종되었습니다.

Calendar cal = Calendar.getInstance(); 
cal.setTime(new Date()); 
cal.set(Calendar.HOUR_OF_DAY, 0); 
cal.set(Calendar.MINUTE, 0); 
cal.set(Calendar.SECOND, 0); 
cal.set(Calendar.MILLISECOND, 0); 
cal.add(Calendar.YEAR, -1); 
String dateLimit = cal.getTime().toString(); 
Date dateFormatter = new SimpleDateFormat("dd-MMM-yyyy").parse(dateLimit); // This one shows I need to either wrap it up in try catch or specify in throws. 

//Date cutOffDate = dateFormatter.parse(dateLimit); //tried this. no avail 

queryBuilder.append(" and c.dateOfContact >= :cutOffDate "); 
parameters.put("cutOffDate", dateFormatter); 

또는 날짜 조작을위한 Hibernate 내장 함수가 있습니까? 내가 원하는 건 쿼리에 날짜를 전달하는 것입니다.이 날짜는 현재 날짜보다 작습니다.

오라클 날짜 형식은 dd-MMM-yyyy입니다. (예 : 21 6 월 2013) 내가이 일을 생각

답변

1

:

parameters.put("cutOffDate", cal.getTime()); 

c.dateOfContact의 유형 cal.getTime보다 java.util.Date 또는 java.sql.Date (경우) 작동해야합니다.

+0

이미 시도해 보았습니다. 그것은 작동하지 않았다. –

+0

"작동하지 않았다"고 설명하십시오. 오류 메시지가 나타 납니까? –

0
Date d = cal.getTime(); 
Query query = em.createQuery(QUERYSTRING)setParameter("cutOffDate", d); 

그때 당신이 StringDate를 비교되기 때문에 위의 문자열로 날짜를 포맷하지 않음, 작동합니다.