2010-06-07 5 views
6

Per un'applicazione Grails, ho bisogno di trovare una lista di oggetti il ​​cui "attr" è uno in una lista dinamica di stringhe. La query reale HQL è più complessa, ma il bit ho bisogno di aiuto con questo:Come esprimere "dove il valore è nella lista dinamica" in HQL/GORM?

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

Questo ovviamente non è la sintassi corretta, Grails lo lancia verso di me come un "token imprevisto", essendo il parametro :list .

È possibile in HQL? Non voglio particolarmente usare i criteri in questa parte del codice base.

risposta

17

Put: lista in parentesi:

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

Non posso usare questa idea di (: lista) e [lista: a lista] con classe Sql.java in grails – AnujKu

+2

Burt 4 President! –

2

Non sono sicuro di come le prestazioni a confronto, ma ero in grado di farlo dritto negli GORM con la parola chiave in in una query where:

def users = MyObject.where { attr in aListOfStrings }