2012-01-20 3 views
12

他の「ユーザー」オブジェクトに続く「ユーザー」というドメインクラスがあるとします。それは頻繁に行われたユースケースではありませんので、私は、逆の関係を設定せずに(特定のユーザーオブジェクトに続くすべてのUserオブジェクトを見つける。)の逆を行う必要がありコレクションにGrailsの別の要素が含まれている要素を検索するにはどうすればよいですか?

def hasMany=[followedUsers:User] 

:それはそうと、指定されたフィールドを持つん。

User.findAll { it.followedUsers.contains(userInstance) } 

が、これは関係なく、常に自分のフォロー状況の、データベース内のすべてのユーザーを返します。私は、クロージャを使用して、このような何かをしようとしました。私はHQLでやってみましたが、悲惨に失敗しました。

誰でも私にこれを達成する最も単純な方法の簡単なポインタを与えることができますか?ありがとうございました。あなたはこのHQLクエリーを使用することができます

答えて

13

:私の意見では

User.executeQuery(
    'select u from User u where :follower in elements(u.followedUsers)', 
    [follower: userInstance]) 
+2

ありがとうございました。私は 'def followers = User.findAll(" Userからどこに?要素(followUsers) "、[userInstance])'を実行しました。私は実際にこのソリューションを試してみましたが、 'elements()'コールが欠落して完了しました。 – ArmlessJohn

0

を、この構文は非常にきれいです。

User.withCriteria { followedUsers{ eq('id', userInstance.id) } } 
関連する問題