Java t rownum r,id从t按x,y)z排序,其中z.id=:id+1表示(r.foo
t rownum r,id从t按x,y)z排序,其中z.id=:id+1表示Java t rownum r,id从t按x,y)z排序,其中z.id=:id+1表示(r.foo,java,hibernate,jpa,criteria,Java,Hibernate,Jpa,Criteria,t rownum r,id从t按x,y)z排序,其中z.id=:id+1表示(r.foo
(r.foo<:foo)或((r.foo=:foo)和(r.bar<:bar))
List<Record> getRecordsPage(long page, int pageSize);
TypedQuery<Record> query = entityManager.createQuery(criteriaQuery);
query.setFirstResult(page * pageSize);
query.setMaxResults(pageSize);
List<Record> getRecordsPage(Record record, int pageSize);
1. RECORD1
2. RECORD2
3. RECORD3
4. RECORD4
5. RECORD5
SELECT COUNT(r)
FROM Record r
WHERE r.id < :X
int page = count / pageSize
...
ORDER BY r.sex, r.id
List<Record> getRecordsPage(Record record, int pageSize) {
// Note this is NOT a native query
Query query = entityManager.createQuery(
"SELECT COUNT(r) " +
"FROM Record r " +
"WHERE (r.foo < :foo) OR ((r.foo = :foo) AND (r.bar < :bar))");
query.setParameter("foo", record.getFoo());
query.setParameter("bar", record.getBar());
int zeroBasedPosition = ((Number) query.getSingleResult()).intValue();
int pageIndex = zeroBasedPosition / pageSize;
return getRecordsPage(pageIndex, pageSize);
}