Java Hibernate从特定索引或偏移量获取列表。
假设我有一个水果列表(假设这些水果在数据库中) 假设在我的域或数据访问对象中Java Hibernate从特定索引或偏移量获取列表。,java,hibernate,list,orm,paging,Java,Hibernate,List,Orm,Paging,假设我有一个水果列表(假设这些水果在数据库中) 假设在我的域或数据访问对象中 public List<String> listOfFruits(){ return myList; } 公共列表listofruits(){ 返回myList; } 现在让我们假设我有1000个水果,我调用了listofruits,当然它将加载整个水果列表,并且假设我们有1000个水果记录,因此它将加载和查询这些水果,并将/产生性能影响 现在我的问题是,在获取这些结果时,
public List<String> listOfFruits(){
return myList;
}
公共列表listofruits(){
返回myList;
}
现在让我们假设我有1000个水果,我调用了listofruits
,当然它将加载整个水果列表,并且假设我们有1000个水果记录,因此它将加载和查询这些水果,并将/产生性能影响
现在我的问题是,在获取这些结果时,如何在arraylist中添加限制或偏移?我目前正在对此进行分页 如果使用hql查询获取以0开头的前10条记录,只需将
限制0,10
添加到hql即可。或者使用
Query
上的setMaxResults
和setFirstResult
方法在代码中,您手动将水果添加到列表中,这些记录已经在内存中,因此在获取这些水果时添加限制没有多大意义
但如果使用Hibernate从数据库检索记录,则可以执行以下操作:
Query q = session.createQuery("FROM table");
q.setFirstResult(firstResult);
q.setMaxResults(maxResults);
如果有人想部分地从表中获取记录,添加限制或设置start和max result将解决问题。但是,如果水果列表是某些对象(如currentStock)的一部分,并且我们想部分地加载此列表,则这些解决方案将如何工作。您应该先发布一个查询,然后尝试什么。只需在hql中使用
limit
。在我的代码中,我将立即调用listofruits()方法并迭代它们。是的,firstResult是当前页面的起点,maxResults是您希望在一个页面上显示的结果数,假设您正在进行分页。如何将这些结果作为列表返回?
Query q = session.createQuery("FROM table");
q.setFirstResult(firstResult);
q.setMaxResults(maxResults);