Ограничить количество результатов в JPQL

Как можно ограничить количество результатов, полученных из базы данных?

select e from Entity e /* I need only 10 results for instance */

Ответ 1

Вы можете попробовать как это, чтобы получить 10 результатов, которые будут выбраны явно.

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

Он автоматически создаст собственный запрос в фоновом режиме для получения определенного количества результатов, если бэкэнд поддерживает его, и в противном случае сделает ограничение в памяти после получения всех результатов.

Ответ 2

Вы также можете установить смещение, используя setFirstResult()

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