2012-07-28 12 views
6

Używam Play 2.0.2 z ebean.filterMany for Play 2 zwraca wszystkie wyniki

W Info klasy I zdefiniowane

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

private Date createdDate = new Date(); 

I MemberInfo ma memberId pole.

Kiedy zrobić

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

Zwraca wszystkie Info, bez sprawdzania memberId z members.

Co zrobiłem źle? Dzięki.

Odpowiedz

8

filterMany() nie filtruje wyników macierzystych według wyrażeń dziecięcych (oba mają oddzielne "zakresy").

Jako opisany jest in its API znajdzie wszystkieInfo obiektów i filtruje members dla każdego.

Istnieje również bardzo podobny temat na temat Google Groups, gdzie autor pytania podaje własne obejście tego problemu.

Zbadać różnicę między:

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

i

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

dostał. Dzięki. – coolsuntraveler

Powiązane problemy