75

I am using JPA 2. For safety reasons, I am working type safe with CriteriaQuery's (and thus, I am not searching for any solutions to typed queries and so on).

I recently came across an issue in which I needed to set a SQL-LIMIT.

After a lot of searching, I was still not successful in finding a solution.

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

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

Can anyone help me?

4

2 に答える 2

173

Queryで制限オフセットを定義します。

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

ドキュメントから:

TypedQuery setFirstResult(int startPosition)

取得する最初の結果の位置を設定します。パラメータ: startPosition - 0 から始まる最初の結果の位置

TypedQuery setMaxResults(int maxResult)

取得する結果の最大数を設定します。

于 2012-07-25T18:10:12.327 に答える