Saltar al contenido

¿Cómo se hace una consulta de límite en JPQL o HQL?

Nuestros desarrolladores estrellas han agotado sus reservas de café, buscando diariamente por la resolución, hasta que Lilian encontró la solución en GitLab y hoy la comparte con nosotros.

Solución:

Esto se publicó en el foro de Hibernate hace unos años cuando se le preguntó por qué funcionaba en Hibernate 2 pero no en Hibernate 3:

El límite era nunca una cláusula admitida en HQL. Está destinado a usar setMaxResults().

Entonces, si funcionó en Hibernate 2, parece que fue por coincidencia, más que por diseño. yo pensar esto se debía a que el analizador HQL de Hibernate 2 reemplazaba los bits de la consulta que reconocía como HQL y dejaba el resto como estaba, para que pudiera colarse algo de SQL nativo. Sin embargo, Hibernate 3 tiene un analizador AST HQL adecuado y es mucho menos indulgente.

pienso Query.setMaxResults() realmente es tu única opción.

 // SQL: SELECT * FROM table LIMIT start, maxRows;

Query q = session.createQuery("FROM table");
q.setFirstResult(start);
q.setMaxResults(maxRows);

Si no quieres usar setMaxResults() sobre el Query objeto, entonces siempre puede volver a usar SQL normal.

Si guardas algún titubeo o disposición de aclarar nuestro reseña puedes dejar una nota y con mucho placer lo analizaremos.

¡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 *