JPQL

2010-08-13 60 views
47

中的結果數量限制如何限制從數據庫中檢索結果的數量?JPQL

select e from Entity e /* I need only 10 results for instance */

回答

59

你可以這樣嘗試,得到10個結果被明確提取。

entityManager.createQuery(JPQL_QUERY) 
      .setParameter(arg0, arg1) 
      .setMaxResults(10) 
      .getResultList(); 

它會自動創建在後端本地查詢檢索結果的具體數目,如果後端支持它,否則做限制在內存中得到所有結果後。

+4

「它會自動創建在後端本地查詢檢索結果的具體數字」 - 只有在數據庫和方言支持它。如果不是,JPA將查詢所有結果並將其過濾到內存中。開發人員必須意識到這一點,因爲它可能會影響性能。更重要的是,對於一些(更復雜的)查詢,JPA甚至不嘗試使用LIMIT/TOP功能,例如當它會導致錯誤的結果時。 – 2013-11-28 12:33:52

+1

@AdamDyga是的,它是特定於實現的,有些明確地提供它們。感謝您添加信息。 – 2013-11-29 07:53:46

19

您可以設置的偏移也使用setFirstResult()共用

em.createNamedQuery("Entity.list") 
     .setFirstResult(startPosition) 
     .setMaxResults(length);