Class 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:
    Datastore queries, Serialized Form