Estoy siguiendo el curso de Screenmatch y llegué a la parte donde se realiza la consulta para obtener el Top 5 de episodios con mejor evaluación. El instructor escribe la consulta usando JPQL con LIMIT 5, y en su proyecto funciona sin marcar errores. Mi código es prácticamente idéntico al del curso (entidades, repositorios, relaciones, etc.), con la única diferencia de que yo estoy usando PostgreSQL con PostgreSQLDialect, mientras que en el curso se utiliza H2Dialect.
El problema es que cuando intento ejecutar esta línea en mi repositorio:
@Query("SELECT e FROM Serie s JOIN s.episodios e WHERE s = :serie ORDER BY e.evaluacion DESC LIMIT 5")
List top5episodios(Serie serie);
Spring Boot lanza un error al ejecutar la aplicación, indicando que no puede resolver los parámetros de la consulta. Si cambio a nativeQuery = true, también falla, pero con un error distinto relacionado con los parámetros nombrados dentro de una consulta nativa.
En resumen:
El mismo código del curso funciona para el instructor.
Yo uso PostgreSQL y él usa H2.
La consulta usando LIMIT falla en mi entorno.
El repositorio, entidades y lógica son los mismos; únicamente cambia el dialect de la base de datos.
Quisiera entender por qué con el dialecto de PostgreSQL la consulta deja de funcionar, mientras que al instructor sí le funciona con H2, aun usando exactamente la misma sintaxis JPQL.
y por qué usa H2 si manda error de incompatibilidad de dialecto.