Saltar al contenido

Spring Data no puede recuperar un registro usando UUID en postgresql

Después de mucho trabajar ya encontramos la respuesta de este enigma que muchos los lectores de nuestro sitio web han presentado. Si quieres compartir algo más no dejes de aportar tu conocimiento.

Solución:

Estoy usando Hibernate 5.3.11 y tuve el mismo problema. Gracias a la respuesta de Luca Basso Ricci en ‘FindByUUID () usando el repositorio JPA de Spring Data’ se corrigió.

La solución (para mí) fue agregar la siguiente anotación al campo UUID:

import org.hibernate.annotations.Type

... 

@Type(type="org.hibernate.type.UUIDCharType")
private UUID uuid;

El Parameter value [12345678-1234-1234-1234-123456789012] did not match expected type [java.util.UUID (n/a)] error significa que el valor leído de la base de datos no se pudo asignar al tipo de campo correspondiente.

Consulte HHH-9562 Manejo de UUID específico de dialecto que mejoró el manejo de UUID en Hibernate 5. Su problema podría resolverse con @Column(columnDefinition = "uuid", updatable = false) anotación.

@Id
@Column(columnDefinition = "uuid", updatable = false)
@GeneratedValue(generator = "uuid")
@GenericGenerator(
        name = "uuid",
        strategy = "com.mypackage.UUIDGenerator",
        parameters = 
                @Parameter(
                        name = UUID_NAMESPACE,
                        value = "something"
                )
        
)
private UUID id;

Si necesita depurarlo más, verifique la clase de dialecto de PostgreSQL que configuró en su código y asegúrese de que la definición de campo en su entidad declare correctamente el tipo de columna UUID de PostgreSQL. Ha habido una serie de problemas con UUID, por ejemplo, HHH-9577.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *