我有三个班,
Class A:
--pointer to class B
Class B:
--Pointer to class C
Class C:
--name
我想向ClassA发一个查询,并检索ClassC.name我该怎么做?
我确实尝试为classC包含classA.ClassB和getParseObject,但这没有成功。
答案 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) {
}
});