2012-04-02 44 views
-1

我需要從搜索條件輸入年份的所有記錄。 例如: String year =「2012」;休眠標準獲得2012年的記錄

在冬眠它的工作爲

criteria.add(Restrictions.like("createDate", "%"+year+"%")); 

CREATEDATE在格式DD-MM-YY。

請建議..

+2

什麼是錯誤?請發佈堆棧跟蹤 – 2012-04-02 09:22:17

回答

0
criteria.add(Restrictions.like("createDate", "%2012%", MatchMode.ANYWHERE)); 

但我寧願(目前它的字符串?)改變你的數據庫字段的日期格式,比對照(而不是等)進行更大。

+0

,以便使用大於或等於2012年1月1日且小於1-jan-2013 – NimChimpsky 2012-04-02 10:09:03

0

like只適用於字符串。對於日期字段,你可以使用Restrictions.between()產生between '01/01/2012 00:00:00' and '12/31/2012 23:59:59'的where子句

SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
Date fromDate = df.parse("1-1-2012 00:00:00"); 
Date toDate = df.parse("31-12-2012 23:59:59"); 

criteria.add(Restrictions.between("createDate", fromDate, toDate)); 

而且,請注意,標準API中使用的所有屬性是Java屬性名稱,而不是實際的列名。