可以将Map对象传递给HQL

时间:2011-04-18 10:13:51

标签: hibernate grails

是否可以将整个地图对象传递给HQL查询而无需迭代它?如果我不得不想,可能会有更清洁的方式。

例如:

def aMap = ["foo":"bar", "bar":"foo"]

Foo.executeQuery("select p from p where p.bar in (:mapObj)", [mapObj: aMap])

然后让它自动使用aMap上的键吗?

如果我尝试它只会抛出此错误:

  

请记住,序数参数是   1为本!

1 个答案:

答案 0 :(得分:2)

这个神秘的错误说executeQuery()只需要一个不同的Map作为最后一个参数 - 使用不同的数据类型或键名。

不,它不会自动使用Map的键。如果它曾经这样做,我认为它应该使用values()代替。无论如何,这将是违反直觉的。

因此,只需使用aMap.keySet(),就可以从Map获得绝对最低的开销。