2012-07-28 10 views
6

Sto usando Play 2.0.2 con ebean.filterMany for Play 2 restituisce tutti i risultati

In Info classe, ho definito

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

private Date createdDate = new Date(); 

E MemberInfo ha memberId campo.

Quando faccio

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

Si restituisce tutte Info, senza controllare memberId di members.

Cosa ho fatto di sbagliato? Grazie.

risposta

8

filterMany() non filtra i risultati principali per espressioni figlio (entrambi hanno "intervalli" separati).

come descriped in its API troverà tuttiInfo oggetti e filtrato members per ciascuno.

C'è anche un argomento molto simile su Google Groups dove l'autore della domanda dà la sua soluzione per questo.

Esaminare la differenza tra:

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

e

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

Capito. Grazie. – coolsuntraveler

Problemi correlati