java持久性查询语言限制结果集

时间:2011-04-12 12:00:57

标签: java mysql jpql

假设我在表格中有以下行“mytable” ID

1

2

3

... ...

500

我的查询就像select m from mytable m where m.id < 300 如何以相同的顺序获得以下输出?

201

202

... ... ...

299

我正在使用setMaxResult(100),但它会返回像我这样的输出

1

2

... ...

100

任何建议?

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

您可以使用setFirstResult来定义起始索引。与setMaxResult一起,您可以获得特定范围。

答案 2 :(得分:-1)

如果您正在使用JPA,可以使用order by

直接在您的JPA查询中:

select m from mytable m where m.id < 300 order by m.id

或使用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")));