mongotemplate data baeldung abstractmongoconfiguration java spring mongodb spring-data

java - data - Spring MongoRepository se está actualizando o subiendo en lugar de insertar



spring data mongodb (2)

Se supone que guardar , por definición, actualizar un objeto en el estilo de inserción, actualizar si está presente e insertar si no. Lea la documentación de la operación de save en el sitio website MongoDb

La operación de inserción en mongodb tiene el comportamiento que espera, pero de la documentación de MongoRepository parece que la inserción se delega para guardar, por lo que no hará ninguna diferencia. Pero puedes intentarlo y ver si funciona para ti. De lo contrario, simplemente puede hacer una obtención antes para verificar si el objeto existe, ya que es una búsqueda de índice que será rápida.

Estoy usando un

org.springframework.data.mongodb.repository.MongoRepository

Comienzo con una base de datos vacía y creo un objeto con _id = 1234 por ejemplo, y configuro algún otro campo de cadena en hello por ejemplo, y luego hago:

repository.save(object);

Todo está bien, guarda el documento en MondoDB.

Creo un objeto NUEVO, configuro el mismo _id = 1234 pero configuro el otro campo de Cadena a world y luego a otro guardado:

repository.save(newObject);

Resultados: el guardado funciona pero actualiza el objeto original.

Resultados esperados: esto debería fallar con una DuplicateKeyException ya que _id es único y estoy usando 2 objetos separados al hacer cada guardado.

Defecto en primavera o estoy haciendo algo mal?


la aplicación se actualizará solo cuando tengas la anotación @Id para uno de los campos, luego de que una dificultad larga haya encontrado esto

@Document(collection="bus") public class Bus { // @Indexed(unique=true, direction=IndexDirection.DESCENDING, dropDups=true) @Id private String busTitle; private int totalNoOfSeats; private int noOfSeatsAvailable; private String busType; }

pero de alguna manera no pude usar @Indexed (unique = true, direction = IndexDirection.DESCENDING, dropDups = true)