我在这里使用数据存储API来创建,更新和更新检索实体。
我的用例是,必须获取父实体的子和子子实体。
我的实体结构如下:
Company
--> Employee
--> Address (Multiple Address entities).
此处我有Company
实体密钥,我需要获取Employee
个详细信息以及为该员工配置的所有Address
个实体。
示例:
Company --> Aaa
Employee --> John
Address --> California
Address --> Redwood
Employee --> Robert
Address --> New York
Address --> Washington
我的查询如下:
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Query query = new Query("Employee").setAncestor(companyKey);
datastore.prepare(query).asList(FetchOptions.Builder.withDefaults());
我要求的结果应该是John& Sons的员工实体。罗伯特以及各自的Address
实体。
答案 0 :(得分:2)
Appengine文档说:
public Query setAncestor(Key ancestor)
“设置此查询的祖先。这会限制查询仅返回来自给定实体的结果实体。换句话说,所有结果都将祖先作为其父级,如果指定了null,则取消设置任何先前设置的祖先。将null作为参数传递不会查询没有祖先的实体(当前不支持此类查询)。或者父亲的父等。 “
所以你的代码应该可以正常工作。它将以Aaa为祖先归还所有实体,即;员工(父母)和地址(父母的父母)实体。