4

在 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),但为了简单起见,这似乎是最容易选择的示例)

4

1 回答 1

-1

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

import grails.gorm.*

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

def query = Book.where( callable( id: 5 ) )
于 2011-11-05T14:49:32.060 回答