我正在开发一个Spring-MVC应用程序,其中我使用Criteria编写了一个搜索函数。对于分页搜索,我从前端获得firstResult和fetchSize作为参数。不幸的是,当仅被问到20行时,Criteria忽略它们并返回一个巨大的列表(大约1000行)。出了什么问题?
代码:
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
我做错了什么?谢谢。
答案 0 :(得分:1)
也许你应该在这里使用 #include <stdio.h>
int main()
{
char* inputstr = "HTTP/1.0 200";
int response = 0;
/
* On success, the sscanf returns the number of variables filled.
* In the case of an input failure before any data could be
* successfully read, EOF is returned.
*/
if(sscanf (inputstr, "HTTP/1.0 %d", &response) == 1)
printf ("response code %d\n",response);
else
printf ("It failed");
return 0;
}
。
Here是对这两种方法的比较。
答案 1 :(得分:1)
import com.tableausoftware.TableauException;
import com.tableausoftware.common.*;
import com.tableausoftware.server.*;
public class PublishOrder {
public static void main( String[] args ) {
try {
// Initialize Tableau Server API
ServerAPI.initialize();
// Create the server connection object
ServerConnection serverConnection = new ServerConnection();
// Connect to the server
serverConnection.connect("https://xxx.online.tableau.com", "xxx@example.com", "xxx", "xxx");
// Publish order-java.tde to the server under the default project with name Order-java
serverConnection.publishExtract("order-java.tde", "default", "Order-java-ubuntu", false);
// Disconnect from the server
serverConnection.disconnect();
// Destroy the server connection object
serverConnection.close();
// Clean up Tableau Server API
ServerAPI.cleanup();
}
catch (TableauException e) {
e.printStackTrace();
}
}
}
与查询导出的记录数无关。它与获取的记录数有关。
您需要使用setMaxResults
来限制hibernate检索的记录数。
设置要检索的最大行数。如果未设置,则检索的行数没有限制。
setFetchSize
仅与内部hibernate如何获取记录组(是一种缓存)有关。
设置基础JDBC查询的获取大小。
来自Statement的描述:
为JDBC驱动程序提供一个提示,指示当此Statement生成的ResultSet对象需要更多行时,应从数据库中提取的行数。如果指定的值为零,则忽略提示。默认值为零。