2012-03-05 82 views
1

我得到一個與Hibernate的錯誤(我不太熟悉的API)。這裏是我下面的代碼:休眠列表出來

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 

我試圖找到有關列出了休眠處理一些教程,但我不斷尋找相同(無益的)東西。到目前爲止,我嘗試過的一切都沒有解決,我希望有人能幫助我。

好吧我更新了我的代碼,我又得到新的錯誤...有什麼不對嗎?我希望可以在這裏一些幫助

回答

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對象。