2016-04-25 87 views
-1

我嘗試提取jobList與「用戶名」的具體招聘之前拋出異常。所以一切都很順利,我可以打印招聘人員的用戶名,用於通過列表循環獲得的工作。但問題是:jobList.add(j)未被執行,然後直接拋出hibernate異常。有誰知道問題是什麼?循環添加記錄

我知道我應該使用合適的查詢,但我得到異常的時候,我的數據庫是非常小的(學校項目),所以它現在並不重要。

public List<Job> list(String userName) throws AdException { 

    try { 
     begin(); 
     Query q = getSession().createQuery("FROM Job"); 
     ArrayList<Job> list = (ArrayList<Job>) q.list(); 
     System.out.println("All Jobs: "+ list); 

     ArrayList<Job> jobList = new ArrayList<Job>(); 

     for (Job j : list) { 
      System.out.println("job userName is: "+ j.getRecruiter().getUserName()); 
      if (j.getRecruiter().getUserName().equalsIgnoreCase("userName")){ 

       jobList.add(j); 
       System.out.println("jobList is: "+ jobList); 
       return jobList; 

      } else { 
       continue; 
      } 

     } 

    } catch (HibernateException e) { 
     rollback(); 
     throw new AdException("Could not get jobList for company: " + userName, e); 
    } 

    return null; 
} 
+0

請發佈完整的堆棧跟蹤。 –

+0

後異常的完整堆棧跟蹤(加上'e.printStackTrace()'來yourcatch條款得到它) –

+0

@JonnyHenly,[在休眠它沒有(http://www.tutorialspoint.com/hibernate/ hibernate_query_language.htm) – Draken

回答

1

我不認爲你想要的用戶名被引用爲一個字符串文字

if (j.getRecruiter().getUserName().equalsIgnoreCase("userName")){ 

而是

if (j.getRecruiter().getUserName().equalsIgnoreCase(userName)){ 

編輯

正如約翰非常和善提到,你的通話方法也應該檢查null正在退回。

+0

即使他修正了這個問題,當'userName'不匹配任何'j.getRecruiter()。getUserName()'時會發生什麼?他沒有處理這個返回null的方法可能是真正的問題所在。雖然我同意你的回答:) –

+1

@JonnyHenly我已經編輯了我的答案和你的建議。 –

+0

是的錯誤是在「用戶名」而不是用戶名。非常感謝!你救了我! (抱歉,這個愚蠢的錯誤!) – userZZZ