在Grails 2.0中使用new where查询的参数

时间:2011-11-05 13:53:23

标签: grails grails-2.0

在Grails 2.0中定义where查询时是否可以使用参数?例如:

def query = Book.where {
   id == it
}
Book sub = query.find(5)

我尝试运行该代码,但它在查找调用时抛出了MissingMethodException。我也尝试在它之前定义一个变量,但它似乎不起作用(因为find返回null,即使我知道它存在)。

Long someId = 5
def query = Book.where {
   id == someId
}
Book sub = query.find()

任何诡计?能够动态更改查询的参数将非常有用。

(我知道我可以使用Book.get(5),但为了简单起见,这似乎是最容易选择的例子)

1 个答案:

答案 0 :(得分:-1)

似乎这样做的方法是将闭包定义为detachCriteria,

import grails.gorm.*

def callable = { id -> 
    id == id
} as DetachedCriteria<Book>

def query = Book.where( callable( id: 5 ) )