Java 为什么我的代码没有在Hibernate查询结果集上迭代?

Java 为什么我的代码没有在Hibernate查询结果集上迭代?,java,struts2,hibernate3,Java,Struts2,Hibernate3,我正在向Hibernate启动一个查询,返回一个包含25个元素的列表。然后我迭代列表以打印出每个元素。问题是它将第一个元素打印了25次,而不是遍历这些元素 这里是第一个类的代码anaAction: package secondary.view; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import javax.servlet.h

我正在向Hibernate启动一个查询,返回一个包含25个元素的列表。然后我迭代列表以打印出每个元素。问题是它将第一个元素打印了25次,而不是遍历这些元素

这里是第一个类的代码
anaAction

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);

}

if(loc.size()>0)
上设置断点,并检查
loc
以确保它包含您期望的内容,即25个不同的条目

如果这不是您所期望的,那么打开SQL日志记录以确保您期望执行的SQL是正确的

log4j.logger.org.hibernate.SQL=TRACE

查看您的LocationMaster hibernate映射。
loc包含第1个元素25次,因为您映射的主键不唯一。

您能给我们看一些代码吗?如何将其添加到Arraylist?我刚刚添加了代码,请查看..LocationMaster表中有什么?多个条目是否具有相同的loc_代码?由于您没有按loc_代码分组,可能只是看到前25个条目实际上共享相同的loc_代码,对吗?没有多个条目没有相同的loc_代码…每个位置只有一个loc_代码AMOL:当您检查此loc.size()时接下来的大小是多少,并在操作级别检查列表的大小。只需发布结果。同时启用hibernate show SQL属性whcih将帮助您查看hibernate正在执行的查询
log4j.logger.org.hibernate.SQL=TRACE