不能迭代List包含sruts 2动作中的Hibernate查询结果?

时间:2013-03-22 11:40:18

标签: hibernate jpa-2.0

我无法迭代HQL的结果列表。我正在使用foreach循环。但是我的struts动作方法getCompanyies()中没有执行循环。我在控制台中获得列表的大小但是对于循环滑雪可能是因为我没有在控制台中获得“内部”消息。我收到了java.lang.IllegalStateException异常

我的行动守则是: -

public String getCompanies(){
    try{
    session.beginTransaction();
    System.out.println("inside get companies");
    List<Company> companies= session.createQuery("select companyID,companyName from Company").list();
    System.out.println(companies.size());
    for(Company obj : companies) {
        System.out.println("inside for");
        System.out.println(obj.getCompanyID());
    }
    }catch(HibernateException e){
        e.printStackTrace();
    }
    session.close();
    return SUCCESS;
}

1 个答案:

答案 0 :(得分:1)

这是因为公司List中的对象不属于Company类型(您可能会对列表的分配发出警告),因为您在{{1}中选择了companyID,companyName查询。

可以快速帮助您的只是重写您的查询:

HQL

因为您的第一个查询将返回包含您请求的两个属性的对象数组。 (您将获得List<Company> companies= session.createQuery("from Company").list(); 并且您必须从此数组中获取值,因此您的代码将如下所示:

List<Object[]>

您必须获得结果列表的每个数组的值。