2017-01-11 15 views
1

残りのAPIとしてhibernateとSpring MVCとしてデータベースからデータをプルするJavaコードを作成しています。設定マッピングなどを作成しました。 JSON object.Iがwritten.MyコードDAOクラスを持っているとして、それを取得する必要があり、次のとおりです。JavaのFOR LOOPのローカル変数のスコープ

@RequestMapping(value="{userid}", method = RequestMethod.GET) 
public @ResponseBody IterationInfo getIterationInfoInJSON(@PathVariable int userid) 
{ 

    Configuration con = new Configuration(); 
    con.configure("hibernate.cfg.xml"); 
    SessionFactory SF = con.buildSessionFactory(); 
    Session session= SF.openSession(); 
    Transaction TR = session.beginTransaction(); 
    Query query=session.createQuery("from IterationInfo"); 
    List<IterationInfo> list=query.list(); 
    for(IterationInfo iterationinfo1 : list) 
    { 
     System.out.println("Iteration id"+iterationinfo1.getIterationid()); 
     System.out.println(iterationinfo1.getIterationname()); 
     System.out.println(iterationinfo1.getProjectid()); 
     System.out.println(iterationinfo1.getIterationenddate()); 
     System.out.println(iterationinfo1.getIterationstartdate()); 
     iterationinfo1.setIterationid(iterationinfo1.getIterationid()); 
     iterationinfo1.setIterationname(iterationinfo1.getIterationname()); 
     iterationinfo1.setProjectid(iterationinfo1.getProjectid()); 
     iterationinfo1.setIterationenddate(iterationinfo1.getIterationenddate()); 
     iterationinfo1.setIterationstartdate(iterationinfo1.getIterationstartdate()); 
    } 
    TR.commit(); 
    session.close(); 
    SF.close(); 

    return iterationinfo1; 
} 

エラーがiterationinfo1が変数に解決することはできませんです。 回答が参考になります。

+0

ですから、実際には 'list'の最後のオブジェクトを返すようにしたい役に立つかもしれませんか?もしそうなら、 'return list.get(list.size() - 1);'はうまくいくはずです。 – Maroun

+0

ありがとうございます...仕事...私は別の質問があります。データベースに複数のエントリがありますので、どうすれば複数のjson結果を返すことができますか? – Akshay

+0

あなたはなぜリストをループしているのか説明できますか? – SujitKumar

答えて

0

これは

@RequestMapping(value="{userid}", method = RequestMethod.GET) 
public @ResponseBody List<IterationInfo> getIterationInfoInJSON(@PathVariable int userid) 
{ 

Configuration con = new Configuration(); 
con.configure("hibernate.cfg.xml"); 
SessionFactory SF = con.buildSessionFactory(); 
Session session= SF.openSession(); 
Transaction TR = session.beginTransaction(); 
Query query=session.createQuery("from IterationInfo"); 
List<IterationInfo> list=query.list(); 
for(IterationInfo iterationinfo1 : list) 
{ 
    System.out.println("Iteration id"+iterationinfo1.getIterationid()); 
    System.out.println(iterationinfo1.getIterationname()); 
    System.out.println(iterationinfo1.getProjectid()); 
    System.out.println(iterationinfo1.getIterationenddate()); 
    System.out.println(iterationinfo1.getIterationstartdate()); 
    iterationinfo1.setIterationid(iterationinfo1.getIterationid()); 
    iterationinfo1.setIterationname(iterationinfo1.getIterationname()); 
    iterationinfo1.setProjectid(iterationinfo1.getProjectid()); 
    iterationinfo1.setIterationenddate(iterationinfo1.getIterationenddate()); 
    iterationinfo1.setIterationstartdate(iterationinfo1.getIterationstartdate()); 
} 
TR.commit(); 
session.close(); 
SF.close(); 

return list; 
} 
+0

私がpublic @ResponseBody IterationInfo getIterationInfoInJSONを記述したメソッドはJSONでデータを返すので、JSONArrayを変換または使用する必要はありません。唯一の問題はデータベース全体の結果です。上記のコードを使用すると、データベース。 – Akshay

+0

'List 'を意味しますか? – VPK

+0

はい.Sys.outを使用してコンソールで結果全体を返しますが、返されるjsonは最初のエントリのみです。 – Akshay

1

これはspring-mvcでタグ付けされているので、コントローラから直接データベースに接続することは一般的には悪いことです。コントローラから呼び出されるサービスメソッドがあり、そのメソッドがdaoまたはrepoクラスと通信する必要があります。

+0

はい、今はちょうどPOCです。主な開発の間に、私たちは間違いなくそれを行います! – Akshay

+1

あなたは良い練習に言及していますが、これはOPの質問には答えません。 – VPK

関連する問題