este problema se puede resolver de variadas maneras, sin embargo te compartimos la que en nuestra opinión es la resolución más completa.
Solución:
Los ObjectIds de Mongo no se asignan a un tipo Java Long.
Veo esto en la documentación, en 7.6.1:
http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo-template.id-handling
Una propiedad o campo de identificación declarado como una cadena en la clase Java se convertirá y se almacenará como un ObjectId si es posible utilizando un Spring Converter. Las reglas de conversión válidas se delegan al controlador MongoDB Java. Si no se puede convertir a un ObjectId, entonces el valor se almacenará como un string en la base de datos
Una propiedad o campo de id declarado como BigInteger en la clase Java se convertirá y se almacenará como un ObjectId utilizando un Spring Converter.
Así que cambie id a String o BigInteger y elimine el argumento de estrategia.
Usando @Id
como una cadena funciona bien.
Asegúrese de que su Repositorio se extienda con una Cadena (del mismo tipo que el @Id):
extends MongoRepository
Creo que el problema es que estás usando Entity
en vez de Document
. Mongo dao debería usar Document
anotación y el repositorio debe extender el MongoRepository
interfaz. Este sería un ejemplo usando lo que tienes. Primero, querrá agregar la dependencia de mongo a su pom (supongo que está usando Spring Boot Parent, por lo que el número de versión se definirá allí)
org.springframework.boot
spring-boot-starter-data-mongodb
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "ACCOUNTS")
public class Account
@Id
private String id;
....rest of properties
import org.springframework.data.mongodb.repository.MongoRepository;
public interface AccountRepository extends MongoRepository
//any extra queries needed
Si te ha resultado de provecho nuestro artículo, agradeceríamos que lo compartas con más entusiastas de la programación y nos ayudes a difundir nuestro contenido.