我有一个方案是将一个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')”
如何实现这个目标?
答案 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'