java - 如何以编程方式更改 Google Cloud Datastore 项目的命名空间?

标签 java google-cloud-datastore

我们正在开发一个库来管理对 Google Cloud Datastore 项目的访问。我们的数据存储项目由多个命名空间组成(一个用于开发,一个用于测试,等等)。 为了访问存储的数据,我们使用 Google 提供的查询构建器。我们需要对某个命名空间进行“类查询”,但在其 docs 中他们解释

Queries of this type are implicitly restricted to the current namespace.

我们尝试使用 NamespaceManager 更改当前命名空间,但由于这不是 Google App Engine 应用程序,因此不起作用。是否可以更改当前的命名空间?

最佳答案

您可以(可选)在 RunQueryRequest 上设置命名空间。对于您的示例(种类的元数据查询),Java 代码将是:

Query.Builder query = Query.newBuilder();
query.addKindBuilder().setName("__kind__");
query.addProjectionBuilder().setProperty(makePropertyReference("__key__"));

RunQueryRequest.Builder req = RunQueryRequest.newBuilder()
    .setQuery(query);
req.getPartitionIdBuilder().setNamespace("my_namespace");

datastore.runQuery(req.build());

在 Python 中:

req = datastore.RunQueryRequest()
req.partition_id.namespace = 'my_namespace'

query = req.query
query.kind.add().name = '__kind__'
query.projection.add().property.name = '__key__'

datastore.run_query(req)

关于java - 如何以编程方式更改 Google Cloud Datastore 项目的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24796318/

相关文章:

java - 在java中调用log4j记录器 "Generic Class"

java - WindowBuilder for Swing制作了成员数据,似乎没有必要

java - 我们什么时候应该通过接口(interface)的类型来引用一个对象?

java - linux shell 和 java

java - 在 App Engine 中查询数据存储的最有效方式

google-cloud-firestore - GCP Firestore API 不适用于 Cloud Datastore 项目

java - App Engine - LocalDatastoreService 加载 - 无法从后备存储加载

java - AppEngine 数据存储区 Java 中的嵌入式实体列表

google-cloud-datastore - 可扩展的从谷歌云数据存储中删除所有内容

Java: SQLSyntaxErrorException 在 ?象征