以下是原代码,按理说正常查第一页是从0-9 第二页是从10-19,但是发现查出来是第一页0-9 第二页9-18
后来发现是因为t.dbGroupId不是唯一的,导致排序混乱,所以又加了个排序字段 就正常了
public List<DbList> findByCondition(int pageIndex, int resultNum)
throws InvalidateArgumentException {
String sql = "SELECT t FROM DbList t ORDER BY t.dbGroupId";
Query query = getEm().createQuery(sql);
if (pageIndex > 0) {
query.setFirstResult((pageIndex - 1) * resultNum);
}
if (resultNum > 0) {
query.setMaxResults(resultNum);
}
List<DbList> list=query.getResultList();
return list;
}
正确代码如下,dbname是唯一的
public List<DbList> findByCondition(int pageIndex, int resultNum)
throws InvalidateArgumentException {
String sql = "SELECT t FROM DbList t ORDER BY t.dbGroupId,t.dbName";
Query query = getEm().createQuery(sql);
if (pageIndex > 0) {
query.setFirstResult((pageIndex - 1) * resultNum);
}
if (resultNum > 0) {
query.setMaxResults(resultNum);
}
List<DbList> list=query.getResultList();
return list;
}