2012-04-06 89 views
1

我在我的Project域类中有一个Integer rankOnHighlights属性。 我想查询有1和45Grails - Criteria查询中的'in'节点 - groovy.lang.IntRange不能转换为java.lang.Integer

之间的rankOnHighlights属性对于这一切的项目,我发出以下条件查询:

Project.withCriteria { 
     'in' "rankOnHighlights",[1..45] 
     maxResults 45 
     order "rankOnHighlights", "desc" 
    } 

不过,我得到了以下错误消息:

groovy.lang.IntRange cannot be cast to java.lang.Integer 

我已经尝试了各种不同的着作,但无济于事。 任何建议是最受欢迎的。

预先感谢您。

回答

3

我不知道为什么不工作,但它应该因为它类似于在文档的例子 - http://grails.org/doc/latest/ref/Domain%20Classes/createCriteria.html - 你应该在http://jira.grails.org/browse/GRAILS

创建一个问题,这样确实可以但是:

between "rankOnHighlights", 1, 45 

编辑: 我想通了,发生了什么,应该是

'in' "rankOnHighlights", (1..45) 

但我仍然可以使用,因为inbetween产生不良的SQL(如果范围足够宽,它可以为数据库查询分析器过大):

... 
where 
    this_.rank_on_highlights in (
     ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? 
    ) 
... 
+0

由于一吨伯特! – 2012-04-06 23:08:51

相关问题