为什么Hibernate会返回随机结果?

时间:2016-01-16 08:11:49

标签: java hibernate

我想使用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();
        }
    }
}

1 个答案:

答案 0 :(得分:5)

要使用分页从数据库中提取数据,您需要根据您可以定义前200行的含义来定义排序条件,否则您的数据库(不是休眠)将按照未定义的顺序返回200行由您和数据库上的数据进行一些修改后可能会发生变化。