spring - 无法从 Spring Boot 中按 CosmosDB 中的 id 删除
问题描述
我可以使用以下代码删除 cosmosdb 中的文档。
Optional<Place> place = repository.findById(id);
repository.delete(place.get());
但是,如果我使用它的方法repository.deleteById(id)
,CrudRepository
它会返回以下错误。
com.azure.data.cosmos.NotFoundException: ["Resource Not Found"]
解决方案
您应该将分区键传递给 deleteById 方法。使用 CosmosRepository 中的以下方法:
void deleteById(ID id, PartitionKey partitionKey);
yourRepository.deleteById(id,new PartitionKey(<parition key value>));
以下内容有效,因为参数具有 ID 和 Partition 键值。
repository.delete(place.get());
此外,使用 CosmosRepository 中的以下方法按 ID 查找文档。
Optional<T> findById(ID id, PartitionKey partitionKey);
如果您的 ID 在分区之间不是唯一的,那么您可能会得到不一致的结果。
推荐阅读
- json - 如何拆分 Apache NiFi 中 json 数组中存在的多个 json 对象?
- javascript - 如何使用 jquery 创建动态复制按钮?
- javascript - 如何使用计时器移动 div?
- javascript - 自定义 javascript 检查是否需要字段
- javascript - React-native android appstate问题
- kubernetes - 从 Service 访问 pod localhost
- mongodb - 如何使用 PM2 运行 MongoDB
- javascript - 通过数组中的对象属性获取前三个对象
- c++ - 从 iDS 流式传输到 OpenCV
- java - android 仪器测试中的模拟包管理器