两个级别的指针 - 一个查询parse.com

时间:2014-06-21 14:54:33

标签: android parse-platform

我有三个班,

Class A:
--pointer to class B

Class B:
--Pointer to class C

Class C:
--name

我想向ClassA发一个查询,并检索ClassC.name我该怎么做?

我确实尝试为classC包含classA.ClassB和getParseObject,但这没有成功。

3 个答案:

答案 0 :(得分:4)

您需要使用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

答案 1 :(得分:0)

在您的班级A中创建一个getter来返回您的B对象:

public B getBobject() {
    return myBobject;
}

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

public C getCobject() {
    return myCobject;
}

最后,执行此操作以获取name

myAobject.getBobject().getCobject().name

答案 2 :(得分:0)

您应该使用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) {

    }
});