سؤال

أنا أستخدم 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 ل members.

أي خطأ ارتكبت؟شكرًا.

هل كانت مفيدة؟

المحلول

filterMany() لا يقوم بتصفية النتائج الأصلية حسب تعبيرات الأطفال (كلاهما لهما "نطاقات" منفصلة).

كما هو موضح في واجهة برمجة التطبيقات الخاصة به سوف تجد الجميع Info الكائنات وتصفيتها members لكل.

هناك أيضًا موضوع مشابه جدًا مجموعات جوجل حيث يقدم مؤلف السؤال الحل الخاص به لذلك.

ادرس الفرق بين:

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

و

find.fetch("members")
    .where().eq("members.memberId", 1L)
    .findList();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top