问题
Suppose I have following rows in a table "mytable" id
1
2
3
... ...
500
and my query is like select m from mytable m where m.id < 300
how can I get following output in the same order?
201
202
... ... ...
299
I am using setMaxResult(100) but it returns me output like this
1
2
... ...
100
any advice?
回答1:
You can use setFirstResult
to define the start index. Together with setMaxResult
you can get a specific range.
回答2:
String ql = "select m from mytable m where m.id < 300 order by m.id";
Query query = em.createQuery(ql);
query.setFirstResult(200);
query.setMaxResults(100);
回答3:
If you are taking about JPA, you can use order by.
Either directly in your JPA query:
select m from mytable m where m.id < 300 order by m.id
Or using criteria:
CriteriaQuery<MyTable> q = cb.createQuery(MyTable.class);
Root<MyTable> c = q.from(MyTable.class);
q.select(c);
q.orderBy(cb.asc(c.get("id")));
来源:https://stackoverflow.com/questions/5634841/java-persistance-query-language-limit-resultset