我参考了 Hibernate API 文档来了解 list() 和 scroll() 之间的区别。ScrollableResults 就像一个游标。ScrollableResults 的一个重要特性是它允许访问当前结果行中的第 i 个对象,而无需通过 get(int i) 函数初始化该行中的任何其他结果。它还允许使用 next() 和 previous() 函数来回移动结果集。
例子 :
ScrollableResults sc = session.createQuery("select e.employeeName,e.employeeDept FROM Employee e").scroll(ScrollMode.SCROLL_INSENSITIVE);
while(sc.next()) {
String empName = (String)sc.get(0);
System.out.println(empName);
String empdept = (String)sc.get(1);
System.out.println(empdept);
}
上述程序的输出将是employeeName 和employeeDept 的值。
现在假设您要获取结果集的最后一条记录。使用 list() 您需要迭代整个结果。使用 ScrollableResults,您可以使用last()
函数。
注意 forScrollableResults sc = session.createCriteria(Employee.class).scroll();
应该被迭代为
while(sc.next()) {
Employee emp = (Employee)sc.get(0);
System.out.println(emp.getname);
}