我想使用Hibernate从数据库中读取数据.我想从第一行开始,读取200行并处理它们,然后读取接下来的200行.但是Hibernate每次都会返回一个随机行.
此方法从数据库中读取.
public List getPages(int start, int end) {
Criteria queryCriteria = session.createCriteria(Page.class);
queryCriteria.setFirstResult(start).setMaxResults(end);
return queryCriteria.list();
}
public void MyFunction(){
while (readFlag) {
//get page from database;
List<Page> pagesList = database.getPages(startFromDatabaseIndex,
READ_FROM_DATABASE_SIZE);
if ((pagesList == null) || (pagesList.size() == 0)) {
break;
}
if (pagesList.size() < READ_FROM_DATABASE_SIZE) {
readFlag = false;
} else {
startFromDatabaseIndex = startFromDatabaseIndex + 200;
}
for (int i = 0; i < pagesList.size(); i++) {
process();
}
}
}
Run Code Online (Sandbox Code Playgroud)
要使用分页从数据库中提取数据,您需要根据您可以定义前200行的含义来定义排序条件,否则您的数据库(不是休眠)将按照您未定义的顺序返回200行.在对数据库进行一些数据修改后可能会发生变化.