2012-07-25 38 views
41

Tôi đang sử dụng JPA 2. Vì lý do an toàn, tôi làm việc an toàn với CriteriaQuery's (và do đó, tôi không tìm kiếm bất kỳ giải pháp nào về truy vấn đã nhập và vân vân). Gần đây tôi đã gặp một vấn đề mà tôi cần phải đặt một giới hạn SQL.JPA 2 CriteriaQuery, sử dụng giới hạn

Sau nhiều lần tìm kiếm, tôi vẫn chưa thành công trong việc tìm kiếm giải pháp.

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

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

Mọi người có thể giúp tôi không?

Trả lời

100

Xác định limitoffset trên Query:

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

Từ các tài liệu:

TypedQuery setFirstResult (int startPosition)

Đặt vị trí của các kết quả đầu tiên để lấy. Tham số: startPosition - vị trí của các kết quả đầu tiên, được đánh số từ 0

setMaxResults TypedQuery (int maxResult)

Đặt số lượng tối đa kết quả để lấy.

+0

Điều này không giải quyết được câu hỏi ban đầu về cách thực hiện điều này với javax.persistence.criteria.CriteriaQuery. Giải pháp được chấp nhận sử dụng hàm createCriteria() không được dùng nữa. –

Các vấn đề liên quan