2013-07-18 43 views
6

Làm cách nào để đặt giới hạn cho truy vấn hql này? Khi tôi thêm từ khóa giới hạn trong truy vấn, một lỗi sẽ được ném.Cách đặt giới hạn cho truy vấn hibernate

@Query("from voucher v where v.voucherType.typeDescription = :typeDescription and v.denomination = :denomination") 
public List<Voucher> findByVoucherTypeAndDenomination(@Param("typeDescription") String typeDescription,@Param("denomination") BigDecimal denomination); 

Trả lời

13

Khi bạn gọi truy vấn của bạn thêm dòng sau:

.setFirstResult(firstResult).setMaxResults(limit); 

CẬP NHẬT

Documents:
http://docs.jboss.org/hibernate/orm/3.6/javadocs/org/hibernate/Query.html#setMaxResults(int)

Nếu bạn sử dụng EntityManager, nó có thể được như:

entityManager.createQuery("yourQuery").setFirstResult(0).setMaxResults(5); 
+0

Xin vui lòng wat hiện firstresult trong setfirstresult (firstresult) đại diện cho –

+0

@SamuelAnertey nó nói mà kết quả hàng để bắt đầu. Trong trường hợp này, cuộc gọi đó đang nói "cho tôi tối đa 5 kết quả, bắt đầu với kết quả 0". Trong trường hợp của MySQL, nó sẽ là tương đương với kết thúc truy vấn của bạn với "giới hạn 0,5". –

3

Bạn có thể sử dụng hai phương pháp đối tượng Truy vấn.

setFirstResult()

setMaxResults()

nhưng bạn không thể sử dụng nó trong HQL vì giới hạn là nhà cung cấp cơ sở dữ liệu phụ thuộc rất Hibernate không cho phép nó thông qua truy vấn HQL

0

Giới hạn không bao giờ là một mệnh đề được hỗ trợ trong HQL. Bạn có nghĩa là sử dụng setMaxResults().

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