Java 一次处理一部分查询
我有一个hibernate查询,它返回10个成千上万的对象结果。是否可以循环查询的各个部分,而不是一次处理整个查询 示例代码:Java 一次处理一部分查询,java,hibernate,Java,Hibernate,我有一个hibernate查询,它返回10个成千上万的对象结果。是否可以循环查询的各个部分,而不是一次处理整个查询 示例代码: Query q = session.createQuery("FROM Class"); List<Class> classList = (List<Class>) q.list(); Query q=session.createQuery(“来自类”); List classList=(List)q.List(); 感谢使用和浏览查询
Query q = session.createQuery("FROM Class");
List<Class> classList = (List<Class>) q.list();
Query q=session.createQuery(“来自类”);
List classList=(List)q.List();
感谢使用和浏览查询
通常,您会编写一个方法,显示结果大小的第x页,其中y是每页的项目数:
public List<Thingy> showThingies(int itemsPerPage, int pageOffest){
// ..
query.setMaxResults(itemsPerPage);
query.setFirstResult(itemsPerPage * pageOffset);
// ..
}
public List showThingies(int itemsPerPage,int pageOffest){
// ..
query.setMaxResults(itemsPerPage);
query.setFirstResult(itemsPerPage*pageOffset);
// ..
}
您可以使用来自hibernate的
比如:
ScrollableResults results = session.createCriteria(Project.class)
.add(Restrictions.eq("projectType", Constants.REINDEX.PROJECT_TYPE))
.setFetchSize(10)
.scroll(ScrollMode.FORWARD_ONLY);
while (results.next()) {
project = (Project) results.get(0);
如果您在大量实体中滚动,您可能还应该时不时地清除会话,否则可能会耗尽内存
更多信息可以在文档中找到,在他们编写文档时,如果不希望连接保持打开状态,则应使用分页