0

HQLからの結果のリストを繰り返すことができません。foreachループを使用しています。しかし、getCompanyies()という名前のstrutsアクションメソッドでループが実行されていません。コンソールでリストのサイズを取得していますが、forループがスキップされるのは、コンソールで「insidefor」メッセージが表示されないことが原因である可能性があります。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;
}
4

1 に答える 1

1

これは、クエリでcompanyID、companyNameを選択しているため、会社のオブジェクトListがタイプではないためです(リストの割り当てについて警告が表示される場合があります) 。CompanyHQL

そこからすぐに役立つのは、クエリを書き直すことです。

List<Company> companies= session.createQuery("from Company").list();

最初のクエリは、要求した2つのプロパティを含むオブジェクトの配列を返すためです。(を取得しList<Object[]>、この配列から値を取得する必要があります)。したがって、コードは次のようになります。

List<Object[]> companies= session.createQuery("select companyID,companyName from Company").list();

また、結果リストの各配列の値を取得する必要があります。

于 2013-03-22T11:48:44.733 に答える