gpt4 book ai didi

hibernate - 在Grails/GORM中使用静态方法findAll关闭

转载 作者:行者123 更新时间:2023-12-02 14:50:42 24 4
gpt4 key购买 nike

我正在将Grails应用程序从2.2.4升级到2.5.0,并且从Hibernate 3升级到Hibernate 4。

有一个现有的GORM findAll查询,该查询将域对象的java.util.Date属性(名为start)传递给对静态方法的调用,该方法返回去除了时间成分的Date的副本。

这是findAll调用的简化版本(不包括引发异常的条件)。

Reservation.findAll {
DateUtils.justDate(start) == DateUtils.justDateToday()
}

它在2.2.4中无任何异常地运行,但是在2.5.0中,它抛出 GroovyCastException,表明 startgrails.gorm.DetachedCriteria,并且不能转换为 java.util.Date

如何使查询正常工作?

我可以使用类似:
Reservation.findAll {
start >= DateUtils.justDateToday() &&
start < DateUtils.justDateTomorrow()
}

但这似乎不雅。同样,域对象属性可能在其他 findAll闭包中用作静态方法的参数,因此,此问题的通用解决方案仍然有用。

最佳答案

使用where查询,您可以使用date()month()year()之类的方法,如下所示:

import static java.util.Calendar.*
Date today = new Date()

Reservation.where {
year(start) == today[YEAR] &&
month(start) == today[MONTH] &&
day(start) == today[DAY_OF_MONTH]
}.list()

关于hibernate - 在Grails/GORM中使用静态方法findAll关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com