Подтвердить что ты не робот

JPA 2 CriteriaQuery, используя предел

Я использую JPA 2. Из соображений безопасности я работаю с безопасностью с CriteriaQuery (и, следовательно, я не ищу никаких решений типизированных запросов и т.д.). Я недавно столкнулся с проблемой, в которой мне нужно установить SQL-LIMIT.

После многого поиска мне все еще не удалось найти решение.

CriteriaQuery<Product> query = getEntityManager().getCriteriaBuilder().createQuery(Product.class);
Root<Product> product = query.from(Product.class);
query.select(product);

return em.createQuery(query).getResultList();

Кто-нибудь может мне помочь?

4b9b3361

Ответ 1

Определите limit и offset на Query:

return em.createQuery(query)
         .setFirstResult(offset) // offset
         .setMaxResults(limit) // limit
         .getResultList();

Из документации:

TypedQuery setFirstResult (int startPosition)

Задайте позицию для получения первого результата. Параметры: startPosition - позиция первого результата, пронумерованная от 0

TypedQuery setMaxResults (int maxResult)

Задайте максимальное количество результатов для поиска.