2016-09-18 5 views
1

Spring MVC @ResponseBodyリターンリストは、hibernateを使用しているときにjson応答(キーなし&ブレースブラケット)ではありませんが、hibernateを使用しない場合は適切なjson応答を取得します。Spring MVC @ResponseBodyリターンリストが適切ではありません

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","[email protected]"]] 

しかし、私は以下のような応答を必要とする:

[{"id":1,"name":"Pratyush","email":"[email protected]"}] 
+1

また、生の型ではなくジェネリックを使用する必要があります。また、(2)Spring Data JPAを使用してそのDAOを自動生成します。 – chrylis

答えて

0

あなたがあなたのDAOの機能を変更する必要があります。

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

あなたはHQLクエリを定義した方法を、それはの形で配列のListを返します[ ID、名前、電子メール]。そして、それを適切なjsonに後で変換することは不可能です(ラベルはその点で失われます)。あなたが望むのはgetStudentData()ListStudentのオブジェクトを返すことです。

関連する問題