2011-04-04 79 views
0

我正在向Hibernate发出一个查询,它返回一个包含25个元素的列表。然后我遍历列表来打印出每个元素。问题是它打印出第一个元素25次,而不是迭代元素。为什么我的代码不能遍历我的Hibernate查询结果集?

这里一流AnalAction代码:

package secondary.view; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.List; 

import javax.servlet.http.HttpServletRequest; 

import org.apache.struts2.interceptor.ServletRequestAware; 
import org.hibernate.Session; 
import secondary.controller.AnalManager; 
import secondary.controller.LocationManager; 
import secondary.model.Anal_01; 
import secondary.model.LocationMaster; 

import com.opensymphony.xwork2.ActionSupport; 

public class AnalAction extends ActionSupport implements ServletRequestAware { 
private List<LocationMaster> loclist; 
    //private List<CustomerMaster> custList; 
    //private ArrayList<String> bgroup; 
    private ArrayList<String> Location; 


public AnalAction() 
    { 
     linkcontroller=new AnalManager(); 
     linkcontroller2=new LocationManager(); 
     //custController=new CustomerMasterManager(); 

    } 


String target=""; 
    public String execute() 
    { 
     try{ 
loclist=linkcontroller2.locList(); //calling from below class LocationManager 
     System.out.println("loclist.."+loclist.size()); 
Location=new ArrayList<String>(); 
     Iterator<LocationMaster> iter = loclist.iterator(); 



while(iter.hasNext())  
    {    
     String str=iter.next().getLoc_name(); 
     System.out.println("location name..:"+str); 
     Location.add(str); 
     target="Entry"; 
    }   
System.out.println("location..."+Location); 

这里是LocationManager

package secondary.controller; 

import java.util.List; 

import org.hibernate.Session; 
import org.hibernate.Transaction; 

import secondary.model.LocationMaster; 
import secondary.util.HibernateUtil; 


public class LocationManager extends HibernateUtil { 

public LocationManager(){}; 
@SuppressWarnings("unchecked") 
public List<LocationMaster> locList() 
{ 
    Session session=HibernateUtil.getSessionFactory().getCurrentSession(); 
    Transaction tran=null; 
    List<LocationMaster> loc=null; 
    try 
    { 
     tran=session.beginTransaction(); 
     loc=(List<LocationMaster>) session.createQuery("from LocationMaster order by loc_code ").list(); 
     if(loc.size()>0) 
     { 
      System.out.println("size.....j"+loc.size()); 

      tran.commit(); 
     } 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
    return loc; 
} 

}

+0

你能告诉我们一些代码吗?你如何将它添加到Arraylist? – tobias86 2011-04-04 07:12:41

+0

代码将帮助很多 – 2011-04-04 07:52:41

+0

我刚刚添加代码plz看到它.. – Amol 2011-04-04 09:24:08

回答

0

放在if(loc.size()>0)断点和检查loc,以确保它包含了什么你期望即25个不同的条目。

如果这不符合您的期望,请打开SQL日志记录以确保您希望执行的SQL是。

log4j.logger.org.hibernate.SQL=TRACE 
0

看看你的LocationMaster hibernate映射。 由于映射主键不唯一,loc包含25次第一个元素。

相关问题