首页 文章

使用数据存储区java API查询WHERE子句(2 - 3个过滤器)时,Google Cloud Datastore Kind无法返回所有记录

提问于
浏览
0

我的数据存储区Kind被索引在5列上 .

当我使用java API查询具有3个索引过滤器的Kind时:

RunQueryRequest.Builder request = RunQueryRequest.newBuilder();
 request.setPartitionId(partitionId);
 GqlQuery gqlQuery= GqlQuery.newBuilder()
                     .setQueryString(query)
                     .setAllowLiterals(true)
                     .build();

 request.setGqlQuery(gqlQuery);
 return datastore.runQuery(request.build());

并检索使用:

runQueryResponse.getBatch().getEntityResultsList();

方法只返回1-2条记录,但从UI查询时,同一查询提供的记录超过1000条 .

使用的依赖:

<dependency>
        <groupId>com.google.cloud.datastore</groupId>
        <artifactId>datastore-v1-protos</artifactId>
        <version>1.5.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.cloud.datastore</groupId>
        <artifactId>datastore-v1-proto-client</artifactId>
        <version>1.6.0</version>
    </dependency>

我们如何解决这个问题?

1 回答

  • 0

    通过添加数据存储API的最新版本依赖性解决(3月18日)

    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-datastore</artifactId>
      <version>1.14.0</version>
    </dependency>
    

    并使用它的方法来创建GQLQuery对象

    GqlQuery<Entity> gqlQuery = Query.newGqlQueryBuilder(Query.ResultType.ENTITY, query)
                         .setNamespace("nameSpace").setAllowLiteral(true).build();
    

    将它传递给

    datastore.run(gqlQuery)
    

相关问题