2010-08-13 5 views

ответ

59

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

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

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

+4

«Он будет автоматически создавать нативный запрос в фоновом для получения определенного количества результатов» - только если база данных и говор его поддерживают. Если нет, JPA будет запрашивать все результаты и фильтровать их в памяти. Разработчик должен знать об этом, так как это может сильно повлиять на производительность. Более того, с некоторыми (более сложными) запросами JPA даже не пытается использовать функциональность LIMIT/TOP, например, когда это приведет к неправильным результатам. –

+1

@AdamDyga Да, это конкретная реализация, некоторые предоставляют их явно. Благодарим за добавление информации. –

19

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

em.createNamedQuery("Entity.list") 
     .setFirstResult(startPosition) 
     .setMaxResults(length); 
Смежные вопросы