我遇到了关于杰克逊序列化对象的方式的问题。
我有一个班级
public class Solution {
private int id;
private String description;
private User user;
private Date createdDate;
private Date lastModifiedDate;
private int isActive;
}
我只想从数据库中选择id和description:
public List<Solution> getSolutionForSearching() {
String hql = "SELECT id,description FROM Solution";
Session session = solutionDao.getSession();
Query query =session.createQuery(hql);
return query.list();
}
我希望响应是一个对象数组
[ { id: 35, description: "12" }, { id: 36, description: "1a" }]
但获得的结果是数组数组
[ [35, "12" ], [ 36, "1a" ]]
如何序列化响应数据以符合要求?
答案 0 :(得分:3)
您的hql查询不会返回Solution
类型的实例。相反,它返回int,String对。所以杰克逊无法将它们映射到正确的形式。
您应该从数据库中返回完整的对象Solution
,或者在将查询结果传递给杰克逊之前将查询结果映射到Solution
对象。
目前您的Solution
对象非常小,因此您无需担心性能问题。只需像这样修改hql查询:
String hql = "SELECT solution FROM Solution solution";