es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Los parámetros de consulta de JpaRepository no se están actualizando dinámicamente.

Los parámetros de consulta no se actualizan:

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.erecruitment.app.model.user;

@Repository
public interface ActualizarContraseña extends JpaRepository<user, long="">{

    @Transactional
    @Modifying
    @Query(value="UPDATE user SET password=?1 WHERE username=?2", nativeQuery=true)
    int actualizarContraseña(String contraseña, String nombreUsuario);  
}

El resultado al ejecutar es:

Hibernate: 
    UPDATE
        user 
    SET
        contraseña=? 
    WHERE
        nombreUsuario=?

Intenté codificar los parámetros de forma manual, así:

@Query(value="UPDATE user SET password='ee' WHERE username='w@g.com'", nativeQuery=true)

Y funcionó. Sin embargo, la primera opción no funcionó. ¿Puede dedicar un minuto a ayudarme, porque no estoy seguro de dónde me estoy equivocando?</user,>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que tu consulta no está recibiendo los parámetros correctamente. En la firma del método, estás esperando dos parámetros: String password y String username. Sin embargo, en tu consulta solo estás haciendo referencia a los marcadores de posición de los parámetros (?1 y ?2).

    Para solucionar este problema, deberías cambiar tu consulta para incluir los marcadores de posición de los parámetros y sus respectivos valores.

    Por ejemplo:

    UPDATE user SET password = ?1 WHERE username = ?2
    

    Luego, al llamar al método, asegúrate de pasar los argumentos correctos en el orden correcto.

    Si esto aún no funciona, puedes intentar depurar tu código y verificar si los valores se están pasando correctamente al método.

Comments are closed.