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