2017-01-11 49 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