Class StructuredQuery<V>

java.lang.Object
com.google.cloud.datastore.Query<V>
com.google.cloud.datastore.StructuredQuery<V>
Type Parameters:
V - the type of the result values this query will produce
All Implemented Interfaces:
RecordQuery<V>, Serializable
Direct Known Subclasses:
EntityQuery, KeyQuery, ProjectionEntityQuery

public abstract class StructuredQuery<V> extends Query<V> implements RecordQuery<V>
An implementation of a Google Cloud Datastore Query that can be constructed by providing all the specific query elements.

A usage example:

A simple query that returns all entities for a specific kind


 Query<Entity> query = Query.newEntityQueryBuilder().setKind(kind).build();
 QueryResults<Entity> results = datastore.run(query);
 while (results.hasNext()) {
   Entity entity = results.next();
   ...
 }
 

A simple key-only query of all entities for a specific kind


 Query<Key> keyOnlyQuery =  Query.newKeyQueryBuilder().setKind(KIND1).build();
 QueryResults<Key> results = datastore.run(keyOnlyQuery);
 ...
 

A less trivial example of a projection query that returns the first 10 results of "age" and "name" properties (sorted and grouped by "age") with an age greater than 18


 Query<ProjectionEntity> query = Query.newProjectionEntityQueryBuilder()
     .setKind(kind)
     .setProjection(Projection.property("age"), Projection.first("name"))
     .setFilter(PropertyFilter.gt("age", 18))
     .setGroupBy("age")
     .setOrderBy(OrderBy.asc("age"))
     .setLimit(10)
     .build();
 QueryResults<ProjectionEntity> results = datastore.run(query);
 ...
 
See Also: