首页 > 解决方案 > 无法从 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"]

标签: springspring-bootazure-cosmosdb

解决方案


您应该将分区键传递给 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 在分区之间不是唯一的,那么您可能会得到不一致的结果。


推荐阅读