filterMany for Play 2返回所有结果

coo*_*ler 6 ebean playframework-2.0

我正在使用Play 2.0.2和ebean.

Info课堂上,我定义了

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

private Date createdDate = new Date();
Run Code Online (Sandbox Code Playgroud)

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();
Run Code Online (Sandbox Code Playgroud)

它返回所有的Info,不检查memberIdmembers.

我做错了什么?谢谢.

bie*_*ior 8

filterMany() 不会按子项的表达式过滤父结果(两者都有单独的'范围').

作为descriped 它的API中它会找到所有的 Info对象和过滤members每个.

Google网上论坛上的主题也非常相似,问题的作者为此提供了自己的解决方法.

检查之间的区别:

find.fetch("members")
    .where().filterMany("members").eq("memberId", 1L)
    .findList();
Run Code Online (Sandbox Code Playgroud)

find.fetch("members")
    .where().eq("members.memberId", 1L)
    .findList();
Run Code Online (Sandbox Code Playgroud)