两个层次的指针-一个查询parse.com



我有三个类,

Class A:
--pointer to class B
Class B:
--Pointer to class C
Class C:
--name

我想做一个查询ClassA,并检索ClassC.name我怎么能做到这一点?

我确实尝试包含类a。ClassB,然后为classC调用getParseObject,但是没有成功

您需要按如下方式使用include()方法:

ParseQuery<ParseObject> query = ParseQuery.getQuery("ClassA");
query.include("pointerToB.pointerToC");
query.findInBackground(new FindCallback<ParseObject>() {
    public void done(List<ParseObject> results, ParseException e) {
        for (ParseObject a in results) {
            ParseObject b = a.getParseObject("pointerToB");
            ParseObject c = b.getParseObject("pointerToC");
            String name = c.getString("name");
        }
    }
});

假设A类的列称为pointerToB, B类的列称为pointerToC

在你的A类创建一个getter来返回你的B对象:

public B getBobject() {
    return myBobject;
}

然后在B类中执行相同的操作以返回C对象:

public C getCobject() {
    return myCobject;
}

最后,执行以下操作以获得name:

myAobject.getBobject().getCobject().name

您应该使用whereMatchesQuery方法与内部查询。假设你的类结构是这样的:

class C {
    int id;
}
class B {
    C c;
}
class A {
    B b;
}

那么你应该使用如下方式查询:

C c = new C();
ParseQuery innerQuery = ParseQuery.getQuery(B.class);
innerQuery.whereEqualTo("c", c);
ParseQuery<A> query = ParseQuery.getQuery(A.class);
query.whereMatchesQuery("b", innerQuery);
query.findInBackground(new FindCallback<A>() {
    @Override
    public void done(List<A> objects, ParseException e) {
    }
});

最新更新