如何在Groovy SQL中将列表传递给查询?

时间:2013-03-27 20:14:17

标签: grails gorm

我有一个方案是将一个char值列表传递给Grails中的查询。

当我通过列表时,这就是发生的事情

def accounts = ['A', 'B']
 AND acct.account_status_cd  in '${accounts}

查询看起来像'[A,B]中的AND acct.account_status_cd“

但它应该是“AND acct.account_status_cd in('A','B')”

如何实现这个目标?

2 个答案:

答案 0 :(得分:3)

解决方案可以是域类中的NamedQuery,如下所示:

class Account {

    // code omitted

    static namedQueries = {
       accountsInList { accountList ->
          'in'("account_status_cd", accountList)
       }
}

然后你可以使用这个namedQuery:

Account.accountsInList(['A', 'B']).list()

当然,你也可以使用withCriteria。

有关详细信息,请参阅文档: http://grails.org/doc/2.2.x/ref/Domain%20Classes/createCriteria.html

答案 1 :(得分:3)

通过传递为字符串解决它...

String s = keys.collect {“'$ it'”} .join(',')

它给了我S ='A','B','C'