2013-06-21 51 views
0

我想弄清楚如何獲得比當前日期少一年的日期,並將其作爲參數傳遞給HQL。將日期傳遞給Java的hql查詢

我試着用日曆。但我迷失在將其轉換爲Oracle所需的正確日期格式。

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內置函數的日期操作?我想要的只是將日期傳遞給查詢,這比當前日期少一年。

Oracle日期格式是dd-MMM-yyyy。 (例如:21君2013)

回答

1

我認爲這將工作:

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

如果c.dateOfContact的類型是java.util.Date還是java.sql.Date比cal.getTime( )必須工作。

+0

我試過了。它不起作用。 –

+0

描述「沒有工作」。你有錯誤信息嗎? –

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

以上應該工作,不要格式化你的日期作爲字符串,因爲這樣你會比較一個StringDate