Получить документы из Cosmosdb Java Перекрестный запрос необходим, но отключен - PullRequest
1 голос
/ 12 марта 2019
public static Document getDocumentById(String id) {

  FeedOptions queryOptions = new FeedOptions();
     queryOptions.setMaxItemCount(10);
     queryOptions.setEnableCrossPartitionQuery(true);

  // Retrieve the document using the DocumentClient.
  List<Document> documentList = documentClient
        .queryDocuments(getTodoCollection().getSelfLink(),
              "SELECT * FROM c WHERE c.id='" + id + "'",null,queryOptions)
        .getQueryIterable().toList();

  if (documentList.size() > 0) {
     return documentList.get(0);
  } else {
     return null;
  }

Здравствуйте, я пытаюсь получить некоторую помощь по извлечению документа из Cosmosdb с использованием Java с использованием приведенного выше кода.Я получаю следующую ошибку:

ПРЕДУПРЕЖДЕНИЕ: операция НЕ будет повторена.Исключение: перекрестный запрос обязателен, но отключен.Пожалуйста, установите x-ms-documentdb-query-enablecrosspartition в значение true, укажите x-ms-documentdb-partitionkey или измените запрос, чтобы избежать этого исключения.ActivityId: 09c62e77-f9dc-4cc7-902d-0cd8c5cad8a6, Microsoft.Azure.Documents.Common / 2.2.0.0

Любая помощь, которую вы можете мне предоставить, будет принята с благодарностью!Спасибо

1 Ответ

0 голосов
/ 13 марта 2019

Произведен поиск перегрузок метода queryDocuments из Документ БД Java SDK API Документ , похоже, он немного отличается от вашего примера кода. Я полагаю, вы установили FeedOptions в неправильном порядке параметров. Пожалуйста, используйте приведенный ниже код, и он работает для меня.

import com.microsoft.azure.documentdb.*;

import java.util.List;

public class QueryDocumentsTest {

    static private String YOUR_COSMOS_DB_ENDPOINT = "https://***.documents.azure.com:443/";
    static private String YOUR_COSMOS_DB_MASTER_KEY="***";

    public static void main(String[] args) {

        DocumentClient client = new DocumentClient(
                YOUR_COSMOS_DB_ENDPOINT,
                YOUR_COSMOS_DB_MASTER_KEY,
                new ConnectionPolicy(),
                ConsistencyLevel.Session);

        FeedOptions queryOptions = new FeedOptions();
//        queryOptions.setMaxItemCount(10);
        queryOptions.setEnableCrossPartitionQuery(true);
        String id = "b01cf483-15e0-517c-deae-2e71bafe7d12";

        // Retrieve the document using the DocumentClient.
        List<Document> documentList = client
                .queryDocuments("dbs/db/colls/part",
                        "SELECT * FROM c WHERE c.id='" + id + "'",queryOptions)
                .getQueryIterable().toList();

        if (documentList.size() > 0) {
            System.out.println(documentList.get(0));
        } else {
            System.out.println("null");
        }

    }
}

Выход:

enter image description here

...