2

Grails のクエリに char 値のリストを渡すシナリオがあります。

リストを渡すと、これが起こっています

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

文字列として渡すことで解決しました...

String 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 に答える