Pergunta

Eu estou usando Jogar 2.0.2 com ebean.

No Info classe, eu definidos

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

private Date createdDate = new Date();

E MemberInfo tem memberId de campo.

Quando eu

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

Ele retorna todos os Info, sem a verificação de memberId de members.

O que fiz de errado?Obrigado.

Foi útil?

Solução

filterMany() não filtrar pai resultados por crianças expressões (ambos tem separado 'intervalos').

Como descriped em sua API ele vai encontrar todos Info objetos e filtrada members para cada um.

Há também muito semelhante tópico Google Groups onde autor da pergunta dá a sua própria solução para isso.

Analisar a diferença entre:

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

e

find.fetch("members")
    .where().eq("members.memberId", 1L)
    .findList();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top