我正在使用Play 2.0.2和ebean。
在Info
课程中,我定义了
@ManyToMany(fetch=FetchType.EAGER)
private Set<MemberInfo> members;
private Date createdDate = new Date();
MemberInfo
有memberId
字段。
当我这样做时
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}}。
我做错了什么?感谢。
答案 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();