java - 在 Google App Engine (Java) 中使用祖先过滤器在事务中进行查询

标签 java google-app-engine

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/

相关文章:

JavaFX如何绑定(bind)TextProperty以追加到TextField(不设置)

java - Java 中的 VTD-XML - 在 XMLModifier.insertAfterElement 之后查找索引

java - JCE Java 8 Update 152 - 如何设置无限制?

java - Google App Engine - JDO - 如何更新集合?

java - 我应该能够将 yaml 与 spring ConfigurationProperties 一起使用吗?

java - java死代码警告

python - 如何解码字符串以与 Google 语言检测 API 一起使用?

docker - docker 容器如何在Google App Engine中缩放?

python - 使用 Python 的文本中的词频但忽略停用词

java - 如何初始化 firebase 托管在 google app-engine 上的 spring-boot 应用程序