我有三个类,
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) {
}
});