简体   繁体   中英

Google cloud Datastore Kind unable to return all records when queried with WHERE clause ( 2 - 3 filters ) using Datastore java API's

My datastore Kind is indexed on 5 columns.

When I query the Kind with 3 indexed filters using java API's :

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());

And retrieved using :

runQueryResponse.getBatch().getEntityResultsList();

method returns only 1-2 records but when queried from UI same query gives more than 1000 records.

depedencies used :

<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>

How can we resolve this issue?

resolved by adding datastore API's latest version dependency (Mar 5'18)

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

And used it's methods to create GQLQuery object

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

to pass it to

datastore.run(gqlQuery)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM