Spring MVC @ResponseBody返回列表不适合使用hibernate的json响应

时间:2016-09-18 07:55:36

标签: java json spring hibernate spring-mvc

Spring MVC @ResponseBody返回列表在使用hibernate时没有正确的json响应(没有键和括号括号)但是如果不使用hibernate则获得正确的json响应。

DAO

public List getStudentData(){
String hql= "select s.id, s.name, s.email from Student s";
Query query=  sessionFactory.getCurrentSession().createQuery(hql);
List list= query.list();
return list;
}

控制器

@RequestMapping(value="/fetchAllData" , method=RequestMethod.GET)
public @ResponseBody List studentContainer1(HttpServletRequest response){
    return ss.getStudentData();
}

JSON(我收到)

[[1,"pratyush","pratyush.ankit@gmail.com"]]

但我需要回复如下:

[{"id":1,"name":"Pratyush","email":"pratyush.ankit@gmail.com"}]

1 个答案:

答案 0 :(得分:0)

您应该将DAO功能更改为:

public List<Student> getStudentData(){
    String hql = "from Student";
    Query query =  sessionFactory.getCurrentSession().createQuery(hql);
    List<Student> list = query.list();
    return list;
}

您定义hql查询的方式是,它将以[id,name,email]的形式返回List个数组。并且以后将它转换为适当的json是不可能的(标签将在那时丢失)。您想要的是让getStudentData()返回ListStudent个对象。