2012-07-28 3 views
6

私はebeanでPlay 2.0.2を使用しています。 InfoクラスでfilterMany for Play 2すべての結果を返します

、私は

@ManyToMany(fetch=FetchType.EAGER) 
private Set<MemberInfo> members; 

private Date createdDate = new Date(); 

そしてMemberInfomemberIdフィールドを持って定義されました。

私は

public static Finder<Long,Info> find 
     = new Finder<Long,Info>(Long.class, Info.class); 

find.fetch("members") 
    .where().filterMany("members").eq("memberId", memberId) 
    .order().desc("createdDate") 
    .findList(); 

を行うとそれがmembersmemberIdをチェックせずに、すべてのInfoを返します。

は私が間違って何をしたのですか?ありがとう。

答えて

8

filterMany()子供の表現で親結果をフィルタリングしません(どちらも別の「範囲」を持っています)。

としては、それがすべてInfoのオブジェクトを検索しますin its API descripedし、それぞれのmembersを濾過しました。

Google Groupsにも非常によく似たトピックがありますが、質問の作成者がこれに対応する方法を教えてください。

の違いを調べ:

find.fetch("members") 
    .where().filterMany("members").eq("memberId", 1L) 
    .findList(); 

find.fetch("members") 
    .where().eq("members.memberId", 1L) 
    .findList(); 
+0

はそれを手に入れました。ありがとう。 – coolsuntraveler

関連する問題