1 回答

TA貢獻1805條經驗 獲得超9個贊
搜索了spring-data-cosmos主頁中提到的分區集合findById方法的測試代碼。
@Test
public void testFindByIdForPartitionedCollection() {
final List<Address> addresses = repository.findByPostalCode(TestConstants.POSTAL_CODE);
assertThat(addresses.size()).isEqualTo(2);
assertThat(addresses.get(0).getPostalCode().equals(TestConstants.POSTAL_CODE));
assertThat(addresses.get(1).getPostalCode().equals(TestConstants.POSTAL_CODE));
}
你可以在這里找到這些陳述:
對于分區集合,如果要通過 findById(id) 查詢記錄,會拋出異常。
// Incorrect for partitioned collection, exception will be thrown
Address result = repository.findById(id); // Caution: Works for non-partitioned collection
相反,您可以使用自定義查詢按 ID 字段名稱查詢記錄。
// Correct, postalCode is the ID field in Address domain
@Repository
public interface AddressRepository extends DocumentDbRepository<Address, String> {
List<Address> findByPostalCode(String postalCode);
}
// Query
List<Address> result = repository.findByPostalCode(postalCode);
另一種方法我發現你仍然可以在 spring-data-cosmos 包中使用 Document DB 普通 sdk,你只需要以簡單的方式封裝該方法。請參考此示例代碼。
就總結而言,這基本上是由于 Spring data commons 更改了 querylookupstrategy 正在實現的接口名稱。你需要回到以前的版本cosmos-db i.e. 2.0.5!這是說明問題的鏈接 github.com/Microsoft/spring-data-cosmosdb/issues/304
添加回答
舉報