web-dev-qa-db-ja.com

JPQLの結果の数を制限する

データベースから取得する結果の数をどのように制限できますか?

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

このようにして、10個の結果を明示的に取得することができます。

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

バックエンドがサポートしている場合は、バックエンドでネイティブクエリを自動的に作成して特定の数の結果を取得し、それ以外の場合はすべての結果を取得した後にメモリの制限を行います。

65
Nayan Wadekar

SetFirstResult()を使用してオフセットを設定することもできます

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