在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),但为了简单起见,这似乎是最容易选择的例子)
答案 0 :(得分:-1)
似乎这样做的方法是将闭包定义为detachCriteria,
import grails.gorm.*
def callable = { id ->
id == id
} as DetachedCriteria<Book>
def query = Book.where( callable( id: 5 ) )