Como recuperar os resultados da consulta
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Após a criação de uma consulta, é possível especificar várias opções de recuperação para controlar ainda mais os resultados retornados.
Acesse Consultas do Datastore para mais informações sobre a estruturação de consultas para o aplicativo.
Como recuperar uma única entidade
Para recuperar apenas uma entidade que corresponda à consulta, use o método PreparedQuery.asSingleEntity()
:
Isso retorna o primeiro resultado encontrado no índice que corresponde à consulta.
Se houver mais de um resultado correspondente, TooManyResultsException
será exibido.
Como iterar pelos resultados de consulta
Ao iterar os resultados de uma consulta usando os métodos PreparedQuery.asIterable()
e PreparedQuery.asIterator()
, o Cloud Datastore recupera os resultados em lotes. Por padrão, cada lote contém 20 resultados, mas é possível alterar esse valor usando FetchOptions.chunkSize()
. É possível continuar iterando pelos resultados da consulta até que todos sejam retornados ou a solicitação expire.
Como recuperar propriedades selecionadas de uma entidade
Para recuperar apenas as propriedades selecionadas de uma entidade, e não toda a entidade, use uma consulta de projeção. Esse tipo de consulta é executado com maior rapidez e custa menos que uma consulta que retorna entidades completas.
Da mesma forma, uma consulta somente de chaves economiza tempo e recursos ao retornar apenas as chaves das entidades correspondentes, e não as entidades completas. Para criar esse tipo de consulta, use o método Query.setKeysOnly()
:
Como definir um limite para a consulta
Você pode especificar um limite para a consulta para controlar o número máximo de resultados retornados em um lote. No exemplo a seguir, recuperamos as cinco pessoas mais altas do Cloud Datastore:
A seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-04 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-04 UTC."],[[["\u003cp\u003eThis API supports first-generation runtimes and is applicable when upgrading to corresponding second-generation runtimes, while migration to Java 11/17 runtimes requires referring to a specific migration guide.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003ePreparedQuery.asSingleEntity()\u003c/code\u003e retrieves a single entity matching a query, throwing a \u003ccode\u003eTooManyResultsException\u003c/code\u003e if multiple matches exist.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003ePreparedQuery.asIterable()\u003c/code\u003e and \u003ccode\u003ePreparedQuery.asIterator()\u003c/code\u003e allow iterating through query results in batches, with the batch size adjustable via \u003ccode\u003eFetchOptions.chunkSize()\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eProjection queries retrieve only selected properties, and keys-only queries retrieve only keys, both being faster and less resource-intensive than full-entity queries.\u003c/p\u003e\n"],["\u003cp\u003eA limit can be set on queries to control the maximum number of results, as demonstrated in the example that retrieves the five tallest people.\u003c/p\u003e\n"]]],[],null,["# Retrieving query results\n\n| This API is supported for first-generation runtimes and can be used when [upgrading to corresponding second-generation runtimes](/appengine/docs/standard/\n| java-gen2\n|\n| /services/access). If you are updating to the App Engine Java 11/17 runtime, refer to the [migration guide](/appengine/migration-center/standard/migrate-to-second-gen/java-differences) to learn about your migration options for legacy bundled services.\n\nAfter constructing a query, you can specify a number of retrieval options to\nfurther control the results it returns.\nSee [datastore queries](/appengine/docs/legacy/standard/java/datastore/queries) for more information on structuring queries for your app.\n\nRetrieving a single entity\n--------------------------\n\n\u003cbr /\u003e\n\nTo retrieve just a single entity matching your query, use the method [`PreparedQuery.asSingleEntity()`](/appengine/docs/legacy/standard/java/javadoc/com/google/appengine/api/datastore/PreparedQuery#asSingleEntity--): \n\n Query q =\n new Query(\"Person\")\n .setFilter(new FilterPredicate(\"lastName\", FilterOperator.EQUAL, targetLastName));\n\n PreparedQuery pq = datastore.prepare(q);\n Entity result = pq.asSingleEntity();\n\nThis returns the first result found in the index that matches the query.\n\n(If there is more than one matching result, it throws a [`TooManyResultsException`](/appengine/docs/legacy/standard/java/javadoc/com/google/appengine/api/datastore/PreparedQuery.TooManyResultsException).)\n\n\nIterating through query results\n-------------------------------\n\nWhen iterating through the results of a query using the [`PreparedQuery.asIterable()`](/appengine/docs/legacy/standard/java/javadoc/com/google/appengine/api/datastore/PreparedQuery#asIterable()) and [`PreparedQuery.asIterator()`](/appengine/docs/legacy/standard/java/javadoc/com/google/appengine/api/datastore/PreparedQuery#asiterator_1) methods, Cloud Datastore retrieves the results in batches. By default each batch contains 20 results, but you can change this value using [`FetchOptions.chunkSize()`](/appengine/docs/legacy/standard/java/javadoc/com/google/appengine/api/datastore/FetchOptions#chunksize). You can continue iterating through query results until all are returned or the request times out.\n\nRetrieving selected properties from an entity\n---------------------------------------------\n\nTo retrieve only selected properties of an entity rather than the entire entity, use a [*projection query*](/appengine/docs/legacy/standard/java/datastore/projectionqueries). This type of query runs faster and costs less than one that returns complete entities.\n\nSimilarly, a [*keys-only query*](/appengine/docs/legacy/standard/java/datastore/queries#keys-only_queries) saves time and resources by returning just the keys to the entities it matches, rather than the full entities themselves. To create this type of query, use the [`Query.setKeysOnly()`](/appengine/docs/legacy/standard/java/javadoc/com/google/appengine/api/datastore/Query#setkeysonly) method: \n\n Query q = new Query(\"Person\").setKeysOnly();\n\nSetting a limit for your query\n------------------------------\n\nYou can specify a *limit* for your query to control the maximum number of results returned in one batch. The following example retrieves the five tallest people from Cloud Datastore: \n\n private List\u003cEntity\u003e getTallestPeople() {\n DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();\n\n Query q = new Query(\"Person\").addSort(\"height\", SortDirection.DESCENDING);\n\n PreparedQuery pq = datastore.prepare(q);\n return pq.asList(FetchOptions.Builder.withLimit(5));\n }\n\nWhat's next?\n------------\n\n- Learn the [common restrictions](/appengine/docs/legacy/standard/java/datastore/query-restrictions) for queries on Cloud Datastore.\n- Learn about [query cursors](/appengine/docs/legacy/standard/java/datastore/query-cursors), which allow an application to retrieve a query's results in convenient batches.\n- [Understand data consistency](/appengine/docs/legacy/standard/java/datastore/data-consistency) and how data consistency works with different types of queries on Cloud Datastore.\n- Learn the [basic syntax and structure of queries](/appengine/docs/legacy/standard/java/datastore/queries) for Cloud Datastore."]]