Estoy tratando de recuperar un documento de la Colección Db Azure Cosmos. Estoy corriendo en un error
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.UnsupportedOperationException: PartitionKey value must be supplied for this operation.] with root cause
java.lang.UnsupportedOperationException: PartitionKey value must be supplied for this operation.
Yo estaba tratando de mirar hacia arriba en línea, ¿cómo puedo proporcionar el valor de clave de partición de la función findById (), pero parece que la "cosmosdb datos Azure Primavera" no tiene la opción de proporcionar la clave de partición con la función para la java implementación
orderTransactionRepository.findById("id").get
Buscado el código de prueba del método findById para la recolección de particiones que se menciona en la página de inicio de primavera-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));
}
Usted puede encontrar las declaraciones aquí :
Para la recogida de particionado, si desea registros de consulta por findById (id), se lanzará una excepción.
// Incorrect for partitioned collection, exception will be thrown
Address result = repository.findById(id); // Caution: Works for non-partitioned collection
En su lugar, se puede consultar los registros de nombre de campo Identificación con consultas personalizadas.
// 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);
Otra manera de que me di cuenta de que todavía podría podría utilizar Documento DB SDK normal en el paquete de datos-primavera-cosmos, sólo tiene que encapsular el método de una manera sencilla. Por favor refiérase a este código de ejemplo .
Sólo para resumida, que era básicamente debido a los comunes de datos de primavera cambiando el nombre de la interfaz que el querylookupstrategy estaba implementando. Usted necesita volver a la versión anterior de la cosmos-db i.e. 2.0.5
! Aquí está el enlace que indica el tema github.com/Microsoft/spring-data-cosmosdb/issues/304