2012-03-05 8 views
1

私はHibernateでエラーが発生しています(私はまだあまりAPIに慣れていません)。ここでは以下の私のコードは次のとおりです。hibernate list out

public void retrieveToDB(String data){ 
    Session session = HibernateUtil.getSessionFactory().openSession(); 
    session.beginTransaction(); 

    Query q = session.createQuery("Select empName from Employee where empName = :emp"); 
    q.setParameter("emp", data); 
    List result = q.list(); 

    Iterator iter = result.iterator(); 

    while(iter.hasNext()){ 
     Employee emp = (Employee) iter.next(); 
     String e = emp.getEmpName(); 
     System.out.println("THIS IS " +e); 
    } 



}  

私は、従業員表から従業員名を取得したいとクライアント側に送信されるテスト文字列に入れます。しかし、私の問題は、私は、私は非常になじみのない午前、このエラーを取得していますされています

Exception in thread "Thread-0" java.lang.ClassCastException: java.lang.String cannot be cast to com.datadistributor.main.Employee 

私は、Hibernateでの取り扱いリストに関するいくつかのチュートリアルを見つけることを試みたが、私は同じ(役に立たない)ものを見つけておきます。私が試したことがない限り、誰かが私を助けてくれることを願っています。

ok私は自分のコードを更新しました。新しいエラーが発生しました...何か間違っていますか?私はここにいくつかの助け

答えて

3

を得ることを願って、私はあなたが何を探していることはこれに近い何かだと思う:

public void retrieveToDB(String data) { 
    Session session = HibernateUtil.getSessionFactory().openSession(); 
    // I don't think you need to start a transaction just to do a SELECT statement 
    //session.beginTransaction(); 

    Query q = session.createQuery("SELECT e from Employee e where e.empName = :empname"); 
    q.setParameter("empname", data); 
    List results = (List) q.list(); 

    String test = null; 
    Iterator iter = results.iterator(); 

    while (iter.hasNext()) { 
     Employee emp = (Employee) iter.next(); 
     test = emp.getEmpName(); 
    } 

    sendMsg(test); 
} 

にあなたのクエリの結果を格納する必要はありません囲むList(またはArrayList)の場合基礎となるEmployeeオブジェクトを取得するためにそれをアンラップするだけです。