filterMany for Play 2返回所有结果

时间:2012-07-28 18:31:48

标签: playframework-2.0 ebean

我正在使用Play 2.0.2和ebean。

Info课程中,我定义了

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

private Date createdDate = new Date();

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

返回所有Info,而不检查memberId的{​​{1}}。

我做错了什么?感谢。

1 个答案:

答案 0 :(得分:8)

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

根据in its API描述,它会找到所有 Info个对象,并为每个对象筛选members

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

检查以下两者之间的区别:

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

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