【发布时间】:2022-01-14 00:41:52
【问题描述】:
我正在将 grails 2.2 升级到 grails 4.0.10。
在使用 java 7 的 grails 2.2 中,这曾经可以工作
def eanalytics = EventAnalytics.createCriteria().get(){
eq('event', raceGroup)
lt('dateCreated', timeService.now())
gt('dateCreated', timeService.now() - 1)
}
现在对于 grails 4 和 java 8,我遇到了这个异常
Caused by: groovy.lang.MissingMethodException: No signature of method: java.util.Date.minus() is applicable for argument types: (Integer) values: [1]
Possible solutions: find(), find(groovy.lang.Closure), is(java.lang.Object), any(), print(java.io.PrintWriter), use([Ljava.lang.Objec
似乎我无法通过仅减去 java 8 中迄今为止的天数来获得新日期。执行此操作的等效代码是什么?感谢您的帮助。
timeservice.now 是
def now(){
def now = new Date()
return now
}
【问题讨论】:
-
在 Grails 4.0.12 中为我工作,所以似乎发生了一些奇怪的事情。尝试使用该版本,或者尝试通过将减法分配给标准之前的变量来隔离问题。可能不相关的注释:您还使用 get() ,它依赖于始终返回单个结果的查询,我建议使用 withCriteria 代替。
-
感谢我通过更改为 localdate 然后执行减号然后返回 java util date 来修复它
-
@wwwclaes “所以似乎发生了一些奇怪的事情” - 发生的只是缺少依赖项。