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();
Кто-нибудь может мне помочь?
Ответы
Ответ 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)
Задайте максимальное количество результатов для поиска.