2016-04-25 12 views
-1

"username"を使用して特定のリクルーターの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)){ 

編集

ジョンはとても親切に言及したようあなたの呼び出し元のメゾもをチェックする必要がありますが返されます。

+0

彼がそれを修正しても、 'userName'が' j.getRecruiter()。getUserName() 'と一致しないとどうなりますか?彼がnullを返すこのメソッドを処理していないのは、おそらく真の問題がある場所です。私はあなたの答えに同意します:) –

+1

@JonnyHenly私はあなたのアドバイスで私の答えを編集しました。 –

+0

はい、userNameの代わりに「username」に間違いがありました。ありがとう、たくさんの男!あなたは私を救いました! (愚かな間違いのために申し訳ありません!) – userZZZ

関連する問題