限制JPQL中的结果数量

cou*_*ech 51 java jpa jpql

如何限制从数据库中检索的结果数量?

select e from Entity e /* I need only 10 results for instance */
Run Code Online (Sandbox Code Playgroud)

Nay*_*kar 65

您可以尝试这样做,显式提取10个结果.

entityManager.createQuery(JPQL_QUERY)
             .setParameter(arg0, arg1)
             .setMaxResults(10)
             .getResultList();
Run Code Online (Sandbox Code Playgroud)

如果后端支持,它将自动在后端创建本机查询以检索特定数量的结果,否则在获得所有结果后在内存中执行限制.

  • "它将自动在后端创建本机查询以检索特定数量的结果" - 仅当数据库和方言支持它时.如果没有,JPA将查询所有结果并在内存中过滤它们.开发人员必须意识到这一点,因为它可能会对性能产生很大影响.更重要的是,对于一些(更复杂的)查询,JPA甚至没有尝试使用LIMIT/TOP功能,例如,当它会导致错误的结果时. (5认同)

小智 20

您也可以使用setFirstResult()设置偏移量

    em.createNamedQuery("Entity.list")
      .setFirstResult(startPosition)
      .setMaxResults(length);
Run Code Online (Sandbox Code Playgroud)