2010-08-13 28 views

Respuesta

59

Puede intentarlo de este modo, obteniendo de forma explícita 10 resultados.

entityManager.createQuery(JPQL_QUERY) 
      .setParameter(arg0, arg1) 
      .setMaxResults(10) 
      .getResultList(); 

Se creará automáticamente consulta nativa de back-end para recuperar determinado número de resultados, si el servidor lo soporta, y de otra manera hacer el límite en la memoria después de obtener todos los resultados.

+4

"creará automáticamente consulta nativa de servicios de fondo para recuperar el número específico de resultados" - sólo si la base de datos y el dialecto lo soporta. De lo contrario, JPA consultará todos los resultados y los filtrará en la memoria. El desarrollador debe ser consciente de eso, ya que puede afectar mucho el rendimiento. Además, con algunas consultas (más complicadas), JPA ni siquiera intenta usar la funcionalidad LIMIT/TOP, por ejemplo, cuando daría lugar a resultados incorrectos. –

+1

@ AdamDyga Sí, es específico de la implementación, algunos los proporcionan explícitamente. Gracias por agregar información. –

19

Es posible ajustar un desplazamiento demasiado usando setFirstResult()

em.createNamedQuery("Entity.list") 
     .setFirstResult(startPosition) 
     .setMaxResults(length); 
Cuestiones relacionadas