2017-10-12 11 views
-1

カスタムクエリでPageableを実装したいです。下は、私が使用しているコードです.SQLはダミーのquery.Couldですか?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() 

合計カウントが必要ですが、私が使用した制限はそれだけです。私は合計の行をカウントするために同じクエリを使用することができますが、クエリは非常に大きく、私は合計のカウントを取得し、行を計算するために同じクエリを2回実行したくありません。 私は本当に助けに感謝します。

+0

だから、結果の合計行を必要とし、最後の結果であなたが計算したいのか? –

+0

@SachinGupta私は総数を求めていますが、私が使った制限はそれだけです。私は合計の行をカウントするために同じクエリを使用することができますが、クエリは非常に大きく、私は合計のカウントを取得し、行を計算するために同じクエリを2回実行したくありません。 –

+0

countクエリを使用して、合計行数を取得します。 –

答えて

1

なぜJPAが提供するページネーションを使用しないのですか?その後

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

SQLでLIMIT句は必要ありません:

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