2017-10-12 55 views
-1

我想在自定義查詢中實現Pageable。下面是我正在使用的代碼。sql是dummy dummy.Could人請告訴我如何計算總行數,從跟隨lastelement?在createNativeQuery中分頁

EntityManager em = OpenJPAUtils.openEntityManager(); 
String sql="select DISTINCT student.studentId from student where ... LIMIT :limit OFFSET :offSet ; " 
query = em.createNativeQuery(sql); 
query.setParameter("limit", pageable.getPageSize()); 
query.setParameter("offSet", pageable.getPageNumber()); 
query.getResultList() 

我想要總計數,但我所用的限制只會給那麼多。我可以使用相同的查詢,無限制地計算總行數,但查詢非常大,我不想兩次運行相同的查詢以獲得總計數並計算行。 我真的很感激幫助。

+0

所以你需要結果的總行,並要計算什麼最後的結果? –

+0

@SachinGupta我想要總數,但我所用的限制只會給予很多。我可以使用相同的查詢,無限制地計算總行數,但查詢非常大,我不想兩次運行相同的查詢以獲得總計數並計算行。 –

+0

使用計數查詢來獲取總行數。 –

回答

1

爲什麼不使用JPA提供的分頁?

query.setFirstResult(firstIndex); 
query.setMaxResults(firstIndex + pageSize); 

然後無需LIMIT子句中的SQL:

String sql="select DISTINCT student.studentId from student where ..."