Как можно ограничить количество результатов, полученных из базы данных?Ограничить количество результатов в JPQL
select e from Entity e /* I need only 10 results for instance */
Как можно ограничить количество результатов, полученных из базы данных?Ограничить количество результатов в JPQL
select e from Entity e /* I need only 10 results for instance */
Вы можете попробовать как это дать 10 результатов, которые будут выбраны явно.
entityManager.createQuery(JPQL_QUERY)
.setParameter(arg0, arg1)
.setMaxResults(10)
.getResultList();
Он будет автоматически создавать нативный запрос в интерфейсе, чтобы получить определенное количество результатов, если бэкенд поддерживает его, и в противном случае сделать ограничение в памяти после получения всех результатов.
Вы можете установить смещение слишком используя setFirstResult()
em.createNamedQuery("Entity.list")
.setFirstResult(startPosition)
.setMaxResults(length);
«Он будет автоматически создавать нативный запрос в фоновом для получения определенного количества результатов» - только если база данных и говор его поддерживают. Если нет, JPA будет запрашивать все результаты и фильтровать их в памяти. Разработчик должен знать об этом, так как это может сильно повлиять на производительность. Более того, с некоторыми (более сложными) запросами JPA даже не пытается использовать функциональность LIMIT/TOP, например, когда это приведет к неправильным результатам. –
@AdamDyga Да, это конкретная реализация, некоторые предоставляют их явно. Благодарим за добавление информации. –