对于grails应用程序,我需要找到一个对象列表,其中“attr”是动态字符串列表中的一个。实际的HQL查询更复杂,但我需要帮助的是:
def result = MyObject.executeQuery("select o from MyObject as o where o.attr in :list",
[list: aListOfStrings])
这显然不是正确的语法,Grails将它作为“意外令牌”抛回给我,作为:list
参数。
这在HQL中是否可行?我并不特别想在代码库的这一部分使用Criteria。
答案 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 ])