【问题标题】:filterMany for Play 2 returns all resultsfilterMany for Play 2 返回所有结果
【发布时间】:2012-07-28 18:31:48
【问题描述】:

我正在使用带有 ebean 的 Play 2.0.2。

在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 或members。

我做错了什么?谢谢。

【问题讨论】:

    标签: playframework-2.0 ebean


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      • 2015-10-23
      • 2012-06-08
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多