Выполнялся поиск тестовый код метода findById для секционированной коллекции, которая упоминается на домашней странице spring-data-cosmos.
@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
Вместо этого вы можете запрашивать записи по имени поля идентификатора с помощью настраиваемого запроса.
// 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);
Другим способом я обнаружил, что вы все еще можете использовать обычный sdk Document DB в пакете spring-data-cosmos, вам просто нужно инкапсулировать метод простым способом. Пожалуйста, обратитесь к этому пример кода.
Подводя итог, можно сказать, что в основном это произошло из-за того, что сообщество данных Spring изменило имя интерфейса, который реализовывала стратегия querylookup. Вам нужно вернуться к предыдущей версии cosmos-db i.e. 2.0.5
! Вот ссылка с указанием проблемы github.com/Microsoft/spring-data-cosmosdb/issues/304
person
Jay Gong
schedule
12.02.2019