我有一个场景将 char 值列表传递给 Grails 中的查询。
当我通过列表时,这就是发生的事情
def accounts = ['A', 'B']
AND acct.account_status_cd in '${accounts}
查询看起来像“AND acct.account_status_cd in '[A,B]'”
但它应该是“AND acct.account_status_cd in ('A','B')”
如何做到这一点?
我有一个场景将 char 值列表传递给 Grails 中的查询。
当我通过列表时,这就是发生的事情
def accounts = ['A', 'B']
AND acct.account_status_cd in '${accounts}
查询看起来像“AND acct.account_status_cd in '[A,B]'”
但它应该是“AND acct.account_status_cd in ('A','B')”
如何做到这一点?
通过作为字符串传递来解决它......
字符串 s = keys.collect { "'$it'" }.join( ',' )
它给了我 S = 'A','B','C'
解决方案可能是您的域类中的 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