2012-07-28 2 views
6

Ich benutze Play 2.0.2 mit Ebean.filterMany for Play 2 gibt alle Ergebnisse zurück

In Info Klasse I definiert

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

private Date createdDate = new Date(); 

Und MemberInfomemberId Feld hat.

Als ich

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(); 

tun gibt es alles Info, ohne memberId von members zu überprüfen.

Was habe ich falsch gemacht? Vielen Dank.

Antwort

8

filterMany() filtert Elternergebnisse nicht nach Kinderausdrücken (beide haben getrennte 'Bereiche').

Als descriped in its API es alleInfo Objekte finden und gefiltert members für jeden.

Es gibt auch sehr ähnliche Thema auf Google Groups wo Autor der Frage gibt seine eigene Workaround dafür.

Untersuchen Sie den Unterschied zwischen:

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

und

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

Verstanden. Vielen Dank. – coolsuntraveler

Verwandte Themen