2

これに似た問題があります。しかし、機能が含まれていないことが必要です。

Post ドメインがあるように。投稿には多数のユーザーがいます。createCriteria を使用してやりたいことは、次のようなものです。

def c = Post.createCriteria()
def l = c.list (max: maxVar) {
    notContains("users", thisUser)
}

neを使ってみましたが、うまくいきません。

def l = c.list (max: maxVar) {
    users {
        ne('id', thisUser.id)
    }
}

明確にするために、コレクションである users フィールドにthisUserが含まれていないすべての Post のリストを取得するにはどうすればよいですか?

4

3 に答える 3

0
c.list (max: maxVar) { not { 'in'("users", thisUser) }}

thisUser のないリストを返します。これは、grails バージョン 2.* で機能します。User クラスの .equals をオーバーライドする必要がある場合があります。

これには、.find を使用するなど、他にも多くの方法があります。このリンクを参照してください http://groovy.codehaus.org/JN1015-Collections

于 2014-06-13T04:13:53.310 に答える
0

従来の解決策を得ることができませんでしたが、2 つの別々のクエリを使用してこの問題を解決しました。

最初に、ユーザーがthisUserを含むすべての投稿を取得しました

users { eq('id', thisUser.id) }

次に、IDが上記のIDのいずれとも一致しない投稿の最大数を取得しました。

Post.findAllByIdNotInList(usersList.id, [max:15])

usersListは最初のクエリの結果です

PS:誰かがより良い解決策を持っている場合は答えてください。ありがとう

于 2014-06-13T12:39:10.713 に答える