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

时间:2016-01-11 15:40:04

标签: java mysql sql hibernate persistence.xml

当我有20行时(id = 5 ....... id = 25) 我想从id = 4(意思是第5行,第6行和第7行)开始获得3个第一行

我以为我可以使用:

  String queryStr = "FROM MyQueue x";
  Query q = DbHandler.createQuery(queryStr);
  q.setFirstResult(idToStart);
  q.setMaxResults(maxRecords);

但是setFirstResult正在计算行数而不是id。

另一件事是使用"WHERE id > 4"来做 - 但我怎么能保证它会占用所需的行,而不是像第17行那样的其他行......

1 个答案:

答案 0 :(得分:0)

在SQL中,您可以使用ORDER BY

来保证这一点
SELECT x.*
FROM MyQueue x
WHERE x.id >= 4
ORDER BY x.id
LIMIT 3;

ORDER BY非常重要,如果你想保证按id值获得接下来的三行;否则结果集中的排序是不确定的(例如,它可能看似有效,然后停止工作)。您只有20行,因此性能不是问题。如果您有更多行,那么您需要id上的索引来优化性能。