如何使用javax.persistence获取从给定id开始并受给定限制的所有行?

如何使用javax.persistence获取从给定id开始并受给定限制的所有行?,java,mysql,sql,hibernate,persistence.xml,Java,Mysql,Sql,Hibernate,Persistence.xml,当我有20行时(id=5…….id=25) 我想从id=4开始得到3行(表示第5行、第6行和第7行) 我想我可以用: String queryStr = "FROM MyQueue x"; Query q = DbHandler.createQuery(queryStr); q.setFirstResult(idToStart); q.setMaxResults(maxRecords); 但是setFirstResult计算的是行数,而不是id 另一件事是使用“WHERE id

当我有20行时(id=5…….id=25) 我想从id=4开始得到3行(表示第5行、第6行和第7行)

我想我可以用:

  String queryStr = "FROM MyQueue x";
  Query q = DbHandler.createQuery(queryStr);
  q.setFirstResult(idToStart);
  q.setMaxResults(maxRecords);
但是setFirstResult计算的是行数,而不是id


另一件事是使用
“WHERE id>4”
-但是我如何保证它将接受所需的行,而不是像SQL中的第17行这样的其他行…

,您可以使用
ORDER BY
来保证这一点:

SELECT x.*
FROM MyQueue x
WHERE x.id >= 4
ORDER BY x.id
LIMIT 3;
如果您想保证按id值获得接下来的三行,则按排序是非常重要的;否则,结果集中的顺序是不确定的(例如,它可能看起来有效,然后停止工作)。您只有20行,所以性能不是问题。如果行数较多,则需要在
id
上建立索引以优化性能。

如何定义“前3行”?表没有固有的顺序如果需要特定的顺序,则必须指定它(使用
orderby
子句)。