java persistance query language limit resultset

旧时模样 提交于 2019-12-11 20:00:43

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!