Как выразить «где значение находится в динамическом списке» в HQL / GORM? - PullRequest
6 голосов
/ 08 июня 2010

Для приложения grails мне нужно найти список объектов, у которых "attr" - один в динамическом списке строк. Фактический запрос HQL более сложный, но мне нужна помощь:

def result = MyObject.executeQuery("select o from MyObject as o where o.attr in :list",
    [list: aListOfStrings])

Это явно неправильный синтаксис, Grails выдает его мне как «неожиданный токен», являющийся параметром :list.

Возможно ли это в HQL? Я не особо хочу использовать критерии в этой части кодовой базы.

Ответы [ 3 ]

19 голосов
/ 08 июня 2010

Положите: список в паренях:

def result = MyObject.executeQuery(
    "select o from MyObject as o where o.attr in (:list)",
    [list: aListOfStrings])
2 голосов
/ 14 октября 2016

Я не уверен, как сравнить производительность, но я смог сделать это прямо в GORM с ключевым словом in в запросе where:

def users = MyObject.where { attr in aListOfStrings }
0 голосов
/ 17 апреля 2018

Это работает для меня как чемпион.

Order.executeQuery ("из Order o, где o.categoryId =: ocatId и o.part in (: partsList) и o.status in (: statusList)", [ocatId: categoryId, partsList: partsList, statusList: statusList: ])

...