Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

como pasar de sql a jpql

Buen día,

Estoy realizando el challenge de LiterAlura, debo realizar una busqueda en base de datos para obtener los libros en un idioma x.

En sql use el siguiente query SELECT * FROM libros WHERE 'es' = ANY(idioma)

En el respository quería hacer una consulta jpql para realizar la misma busqueda, realice el siguiente query: @Query("SELECT l FROM Libro l WHERE :idioma = ANY(l.idioma)") List findByIdioma(String idioma);

pero siempre me daba error y termine haciendo un native query, sin embargo en el curso decían que es mala práctica, quisiera saber como lo puedo hacer de forma correcta.

Muchas gracias.

1 respuesta

¡Hola Brayan!

Entiendo tu problema. Parece que estás teniendo dificultades al convertir tu consulta SQL a JPQL. El problema en tu consulta JPQL es que estás usando parámetros de manera incorrecta. En JPQL, no puedes usar un parámetro para comparar con una colección de valores como lo estás haciendo con ANY(l.idioma).

La forma correcta de hacerlo en JPQL sería utilizando la cláusula IN en lugar de ANY. Aquí tienes un ejemplo de cómo podrías escribir tu consulta JPQL para lograr el mismo resultado que tu consulta SQL:

@Query("SELECT l FROM Libro l WHERE :idioma IN (l.idioma)")
List<Libro> findByIdioma(String idioma);

Con esta modificación, la consulta debería funcionar correctamente y obtendrás los libros en el idioma que estás buscando.

Espero que esta solución te ayude a resolver tu problema. ¡Buena suerte con tu challenge de LiterAlura!

Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!