2016-04-25 95 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