PartitionKey valor debe ser suministrado para esta operación

Nikhil Jain:

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
Jay Gong:

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=211102&siteId=1
Recomendado
Clasificación