我正在将 Grails 应用程序从 2.2.4 升级到 2.5.0,并从 Hibernate 3 升级到 Hibernate 4。
有一个现有的 GORMfindAll
查询将域对象的java.util.Date
属性(名为)传递给对静态方法的调用,该方法返回除去时间组件start
的副本。Date
这是findAll
调用的简化版本(不包括引发异常的标准以外的标准):
Reservation.findAll {
DateUtils.justDate(start) == DateUtils.justDateToday()
}
这在 2.2.4 中没有任何异常运行,但是在 2.5.0 中,它抛出了一个GroovyCastException
说法,start
即 a grails.gorm.DetachedCriteria
,并且不能强制转换为java.util.Date
。
我怎样才能让查询工作?
我可以使用类似的东西:
Reservation.findAll {
start >= DateUtils.justDateToday() &&
start < DateUtils.justDateTomorrow()
}
但这似乎不优雅。此外,域对象属性可能会用作其他findAll
闭包中静态方法的参数,因此该问题的通用解决方案仍然有用。