Параметры с новыми запросами where в Grails 2.0 - PullRequest
4 голосов
/ 05 ноября 2011

Можно ли использовать параметры при определении запроса where в Grails 2.0? Например:

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

Я попытался запустить этот код, но он вызывает исключение MissingMethodException при вызове для поиска. Я также пытался определить переменную перед ней, но она, похоже, не работает (так как find возвращает ноль, хотя я знаю, что она существует).

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

Есть хитрости? Возможность динамического изменения параметров запроса была бы чрезвычайно полезна.

(я знаю, что мог бы просто использовать Book.get (5), но для простоты это казалось самым простым примером для выбора)

1 Ответ

0 голосов
/ 05 ноября 2011

Похоже, способ сделать это - определить замыкание как detachCriteria,

import grails.gorm.*

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

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