1
我升級一個Grails應用從2.2.4至2.5.0和從休眠3休眠4.Grails中/ GORM的findAll閉合使用靜態方法
有一個現有的GORM findAll
查詢傳遞一個java.util.Date
域對象的屬性(名爲start
)與對靜態方法的調用有關,該靜態方法返回Date
的副本並剝離時間組件。
這裏的findAll
通話的簡化版本(不低於拋出異常的另一個條件):
Reservation.findAll {
DateUtils.justDate(start) == DateUtils.justDateToday()
}
這將運行沒有任何2.2.4異常,但在2.5.0,它拋出GroovyCastException
說start
是grails.gorm.DetachedCriteria
,並且不能投射到java.util.Date
。
如何讓查詢生效?
我可以使用類似:
Reservation.findAll {
start >= DateUtils.justDateToday() &&
start < DateUtils.justDateTomorrow()
}
,但似乎不雅。此外,域對象屬性可能會用作其他關閉中的靜態方法的參數,所以這個問題的通用解決方案仍然有用。
你必須也顯示start'是如何'策劃弄清楚它爲什麼抱怨它是一個'的DetachedCriteria ' – dmahapatro
你是什麼意思「如何開始'是精心策劃的」? 'start'是一個標準的GORM域對象屬性,聲明如下:'Date start'。這是你正在尋找的信息嗎? – XDR
'start'也有以下GORM約束:'start validator:{val,obj - >!val || !obj.end || val
XDR