如何在HQL / GORM中表达“动态列表中的值”?

时间:2010-06-07 20:52:59

标签: grails hql gorm

对于grails应用程序,我需要找到一个对象列表,其中“attr”是动态字符串列表中的一个。实际的HQL查询更复杂,但我需要帮助的是:

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

这显然不是正确的语法,Grails将它作为“意外令牌”抛回给我,作为:list参数。

这在HQL中是否可行?我并不特别想在代码库的这一部分使用Criteria。

3 个答案:

答案 0 :(得分:19)

Put:parens中的列表:

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

答案 1 :(得分:2)

我不确定效果如何比较,但我可以使用in查询中的where关键字直接在GORM中执行此操作:

def users = MyObject.where { attr in aListOfStrings }

答案 2 :(得分:0)

这对我来说就像冠军一样。

Order.executeQuery(“from order o where o.categoryId =:ocatId and o.part in(:partsList)and o.status in(:statusList)”,[ocatId:categoryId,partsList:partsList,statusList:statusList ])