2010-06-07 46 views
6

對於Grails應用程序,我需要查找其中「attr」是動態字符串列表中的一個的對象列表。實際的HQL查詢比較複雜,但我需要幫助該位是這樣的:如何在HQL/GORM中表達「哪裏值在動態列表中」?

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

這顯然是不正確的語法,Grails的扔了回來,在我作爲一個「意外的標記」,作爲:list參數。

這在HQL中可能嗎?我不特別想在這部分代碼庫中使用Criteria。

回答

17

地說:列表的括號:

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

我不能用grails中的Sql.java類使用(:list)和[list:aList]這個想法 – AnujKu 2014-10-21 19:51:49

+2

Burt 4 President! – 2017-10-11 23:11:48

2

我不知道性能如何比較,但我可以在where查詢與in關鍵字做到這一點直GORM:

def users = MyObject.where { attr in aListOfStrings }