2

我有一个场景将 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')”

如何做到这一点?

4

2 回答 2

5

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

字符串 s = keys.collect { "'$it'" }.join( ',' )

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

于 2013-03-28T01:53:01.200 回答
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

于 2013-03-27T20:25:52.923 回答