2017-01-11 47 views
1

我寫一個Java代碼中使用Hibernate和Spring MVC作爲休息API.I拉從數據庫中的數據在for循環的局部變量已經創建的配置映射etc.The標準輸出顯示了從數據庫中,但我正確的輸出必須把它作爲一個JSON object.I有DAO類written.My代碼如下:範圍在Java

@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

我已經寫了公開IterationInfo @ResponseBody的getIterationInfoInJSON方法,JSON,所以沒有必要轉換或使用JSONArray.The唯一的問題是我想對整個數據庫的結果。採用上面的代碼返回數據給我的只有第一個條目的結果數據庫。 – Akshay

+0

你的意思是'List '? – VPK

+0

是的..它使用Sys.out在控制檯中返回整個結果,但返回的json僅用於第一個輸入。 – Akshay

1

既然你已經標記了這個帶彈簧MVC,它通常是一種不好的做法,直接從控制器連接到數據庫。您應該有一個從控制器調用的服務方法,並且該方法與您的dao或repo類進行通信。

+0

是,但現在它只是一個POC.During主體發展,我們一定會做到這一點! – Akshay

+1

雖然你提到了很好的做法,但這並不能回答OP的問題。 – VPK