5

我在 AS/400 上使用 Db2,我正在尝试执行一个 JPQL 查询,该查询会将结果从第 x 行返回到第 y 行。

在 SQL 中这有效:

select cur.* from (
  SELECT ROW_NUMBER() OVER() AS ROWNUM FROM tableName d) as cur
WHERE cur.ROWNUM > 0 AND cur.ROWNUM < 10

我怎样才能在 JQPL 中做到这一点?我尝试了很多方法,但每次都遇到异常。

我想将我的结果限制在查询中,而不是使用 setMaxResult、setFirstResult 方法。

4

2 回答 2

13
Query q = em.createQuery("select e from SomeEntity e")
            .setFirstResult(0)
            .setMaxResults(10);
于 2012-06-26T11:41:12.380 回答
1

那是做不到的。JPQL 对实体进行操作,实体映射到数据库中的表。db2 中的行号是结果集中的概念,而不是数据库表中的概念。

于 2012-06-26T11:54:03.583 回答