Java Hibernate:条件忽略fetchSize参数并获取的行数超过要求的行数
我正在开发一个SpringMVC应用程序,其中有一个使用条件编写的搜索函数。对于分页搜索,我从前端获取firstResult和fetchSize作为参数。不幸的是,当只要求20行时,Criteria会忽略它们并返回一个巨大的列表(大约1000行)。出什么事了 代码:Java Hibernate:条件忽略fetchSize参数并获取的行数超过要求的行数,java,spring,hibernate,criteria,hibernate-criteria,Java,Spring,Hibernate,Criteria,Hibernate Criteria,我正在开发一个SpringMVC应用程序,其中有一个使用条件编写的搜索函数。对于分页搜索,我从前端获取firstResult和fetchSize作为参数。不幸的是,当只要求20行时,Criteria会忽略它们并返回一个巨大的列表(大约1000行)。出什么事了 代码: System.out.println("Fetch size is "+fetchSize); System.out.println("First result is "+firstResult); Criter
System.out.println("Fetch size is "+fetchSize);
System.out.println("First result is "+firstResult);
Criteria andCriteria = session.createCriteria(Host.class);
Conjunction and = Restrictions.conjunction();
if((studentSearchHistory.getCity()!=null) && (!(studentSearchHistory.getCity().isEmpty()))) {
and.add(Restrictions.ilike("city", studentSearchHistory.getCity()));
}
//Other search conditions
andCriteria.setFetchSize(fetchSize);
andCriteria.setFirstResult(firstResult);
andCriteria.add(and);
hostList.addAll(andCriteria.list());
if(hostList != null){
System.out.println("Host list size is "+hostList.size());
}
输出:
Fetch size is 10
First result is 0
Host list size is 1003
我做错了什么?多谢各位 也许您应该在这里使用
setMaxResults
是这两种方法的比较。
fetchSize
与查询导出的记录数无关。它与获取的记录数有关
您需要使用来限制hibernate检索的记录数
设置要检索的最大行数。如果未设置,则检索的行数没有限制
仅与如何在内部休眠获取记录组(是一种缓存)有关
为基础JDBC查询设置获取大小
根据以下描述:
当此语句生成的ResultSet对象需要更多行时,向JDBC驱动程序提示应从数据库中提取的行数。如果指定的值为零,则忽略提示。默认值为零
尝试
criteria.setMaxResults(n)