Java documentation说应用程序可以在事务期间执行查询,但前提是它包含祖先过滤器,但没有关于如何执行此操作的文档。谁能提供一些示例代码来展示如何以最简洁的方式做到这一点?
最佳答案
我在这个问题上挣扎了一段时间,但下面的方法会起作用!简而言之,与 App Engine 一起使用的 JDO 绝对可以支持祖先查询,因此您不必求助于 App Engine 特有的低级 API,特别是在您希望在整个应用程序中坚持使用 JDO 的情况下。
第 1 步:
在子类中确保具有以下实例变量。变量的实际名称并不重要。重要的是注释。
@Persistent
@Extension(vendorName="datanucleus", key="gae.parent-pk", value="true")
private String mParentEncKey;
第 2 步:
当通过父键查询子对象时,您希望通过您创建的实例变量的名称过滤parentKey...在这种情况下,此示例适用于如果您想查询假设您知道父键和该属性,则具有属性的子对象集。
public static List<ChildObject> queryYourChildObjects(String parentKey, String someProperty) {
PersistenceManager pm = PMF.get().getPersistenceManager();
Query q = pm.newQuery(ChildObject.class);
q.setFilter("mParentEncKey == parentKeyParam && property == propertyParam");
q.declareParameters("String parentKeyParam, String propertyParam");
List<ChildObject> results = (List<ChildObject>) q.execute(parentKey, someProperty);
return results;
}
就是这样!希望这有帮助。
关于java - 在 Google App Engine (Java) 中使用祖先过滤器在事务中进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1662113/