2012-03-29 8 views
0

私はSpring 2.5 MVCモジュールで作業中です。テンプレートを使用してデータベースからデータを取得しています。リストに戻ります。そして今私は、Beanがそのが(Login) it.next()Loginオブジェクトではありません帰国されているものになりますのでなぜこのコードがスローされているのですか?Java Spring MVC

List listLogin = LoginDao.Authenticate(username,password); 
    Iterator it = listLogin.iterator(); 
    while (it.hasNext()) 
    { 
     Login bean1= (Login) it.next(); //here it is showing classCastException 
     System.out.println(bean1.getClinicId()); 
    } 

    public static List Authenticate(String userName, String password) { 
     List names = template.query("select clinicId from doc_user where userName='"+userName+"' and passwd='"+password+"'", 
      new RowMapper() { 
       public Object mapRow(ResultSet resultSet, int i) throws SQLException 
       { 
        ArrayList lst = new ArrayList(); 
        Login loginBean = new Login(); 
        loginBean.setClinicId(String.valueOf(resultSet.getInt(1))); 
        lst.add(loginBean); 
        return lst; 
       } 
     }); 
     return names; 
    } 
+1

注意点としては将来、例外のスタックトレースをポストすることも役に立ちます。 –

答えて

2

ClassCastExceptionを示すオブジェクトから値を取得しようとします。あなたは、デバッガとステップトラフを使用し、それを返しているかを見るか、貧しい人のバージョンを行い、それをプリントアウトし、それが戻っているかを確認することができ、次のいずれか

while (it.hasNext()) 
    { 
     Object bean1= it.next(); 
     System.out.println(bean1.getClass().getName()); 
    } 

あなたのコメントに基づいてUPDATE:

あなたはそれがあなたのログインオブジェクトのリストを含むリストを返していることを知っている:

while (it.hasNext()) 
{ 
    List list1 = (List)it.next(); 
    for (Object bean : list1) { 
     System.out.println(((Login)bean).getClinicId()); 
    } 
} 

私は私はあなたが何か間違ったことをやっていると思う、と言うだろう、あなたのクエリはおそらくログインのリストを返すべきであることまずは

public static List Authenticate(String userName, String password) { 
     List names = template.query("select clinicId from doc_user where userName='"+userName+"' and passwd='"+password+"'", 
      new RowMapper() { 
       public Object mapRow(ResultSet resultSet, int i) throws SQLException 
       { 
        Login loginBean = new Login(); 
        loginBean.setClinicId(String.valueOf(resultSet.getInt(1))); 
        return loginBean ; 
       } 
     }); 
     return names; 
} 

をそしてあなたは、もともと働くだろうと思ったのコードでそれらを処理する:それはそれのように思えるので、親のリスト内のArrayListにのみ、あなたはおそらく何ができるように、一つのオブジェクトが含まれています

List listLogin = LoginDao.Authenticate(username,password); 

Iterator it = listLogin.iterator(); 
while (it.hasNext()) { 
    Login bean1= (Login) it.next(); 
    System.out.println(bean1.getClinicId()); 
} 
+0

あなたの答えMr jschoenに感謝します...私はそれがArrayListクラス型を返すことを知っていました。しかし、このリストオブジェクトではBeanオブジェクトまたはオブジェクトを格納していましたが、今はオブジェクトプロパティ値を取得したい...ありがとう –

+0

あなたは何を意味するのかよくわかりません。混合型のオブジェクトのリストを返すと言っていますか?いくつかはリストであり、いくつかは 'Login'タイプのものです。そうであれば、リストの代わりにそれらの値のMapを返すことを考えましたか?あなたが望むものを手に入れやすくなります。もう1つ(おそらく良いオプション)は、それらのプロパティを保持し、その単一のオブジェクトを返す新しいクラスを作成することです。 –

+0

コード "lst"はArrayListオブジェクト –

関連する問題