#azure-cosmosdb #azure-cosmosdb-sqlapi
#azure-cosmosdb #azure-cosmosdb-sqlapi
Вопрос:
Я использую следующую зависимость для подключения к Azure cosmos db
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-documentdb</artifactId>
<version>LATEST</version>
</dependency>
И используя этот запрос
"SELECT c.parentid, COUNT(1) AS count FROM collection c WHERE c.parentid != 'null' GROUP BY c.parentid"
И я получаю следующую ошибку —
{"errors":[{"severity":"Error","location":{"start":91,"end":96},"code":"SC1001","message":"Syntax error, incorrect syntax near 'GROUP'."}
Есть ли какая-либо конфигурация, которой мне не хватает в приложении Java, или group by не поддерживается?
Комментарии:
1. Если вы зайдете в обозреватель данных (на портале Azure), вы можете запустить SQL: получаете ли вы там ту же ошибку?
2. Но также
'null
» это строка, вы имели в видуwhere c.parientId is not null
?3. да, я имею в виду, где c.parientId не равен null (нулевая строка)
4. Первое, что нужно проверить: конфликт имен. Вы назвали столбец
count
, который также является зарезервированным словом. Изменяется ли ошибка при переименованииcount
на что-то другое? Или все еще ошибка? Примечание: даже если это не имеет никакого отношения к ошибке, я предлагаю не использовать ключевые слова в качестве имен столбцов.5. @DavidMakogon — ошибка остается неизменной после переименования
Ответ №1:
Проблема в том, что вы используете старую версию Java SDK, которая не поддерживает GROUP BY.
Пожалуйста, обновите Java SDK до последней версии 4. Раздел зависимостей должен выглядеть следующим образом.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-cosmos</artifactId>
<version>4.8.0</version>
</dependency>
Если вы новичок в использовании Java SDK версии 4, в него включены модули синхронизации и асинхронности. Вы можете взглянуть, следуя этому здесь, Quickstart: создайте Java-приложение для управления данными SQL API Azure Cosmos DB
Комментарии:
1. Я получаю эту ошибку с вышеуказанной зависимостью — не удалось создать экземпляр [com.azure.cosmos. CosmosClient]: Фабричный метод ‘cosmosClient’ выдал исключение; вложенным исключением является java.lang. Ошибка NoSuchFieldError: ALLOW_TRAILING_COMMA