2012-04-06 91 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

相關問題