我正在从多个表/ Pojo‘检索数据,我想要JSON类中的数据,我使用的是format.In,而不是以所需的格式获得Json的结果。我的结果是:
[["2017 Sprint 1","Android development",23/12/2016,16/01/2017]]我想要{ "iteration": "2017 Sprint 1", "project": "MDM - Core & Integration", "isd": "23/12/2016", "ied": "16/01/2017",格式的结果
我的主控制器方法:
@Controller
@RequestMapping("/json/retrospective")
public class MainControllerClass
{
@RequestMapping(value="{userid}", method = RequestMethod.GET,produces=MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public List<Details> getInfoInJSON(@PathVariable int userid)
{
Configuration con = new Configuration();
con.configure("hibernate.cfg.xml");
SessionFactory SF = con.buildSessionFactory();
Session session= SF.openSession();
Query test=session.createQuery("select itr.iteration_name,prj.project_name,itr.isd,itr.ied from RetrospectiveInfo retro,IterationInfo itr,ProjectInfo prj where retro.retrospective_id ="+userid+" and retro.project_id = prj.project_id and retro.iteration_id = itr.iteration_id");
List<Details> details= test.list();
session.close();
SF.close();
return details;
}
}班级详情:
public class Details
{
@JsonProperty("iteration")
private String iteration;
@JsonProperty("project")
private String project;
@JsonProperty("isd")
private Date isd;
@JsonProperty("ied")
private Date ied;
getter/setters我在buildpath.Why中有3个Jackson jars注释、数据库和最新版本2.8的核心--我会得到这样的结果吗??我需要在代码中做哪些更改??是否需要添加任何jars??请帮助。
发布于 2017-01-25 10:30:33
主要问题是,您正在构建一个使用不同类型检查(Error: Cannot create TypedQuery for query with more than one return)的JPA查询生成的Details类。
要解决这个问题,请为所需的JSON属性创建一个构造函数
package com.sof.type;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonPropertyOrder({ "iteration", "project", "isd", "ied"})
public class Details {
@JsonProperty
private String iteration;
@JsonProperty
private String project;
@JsonProperty
private String isd;
@JsonProperty
private String ied;
public Details(String iteration, String project, String isd, String ied) {
this.iteration = iteration;
this.project = project;
this.isd = isd;
this.ied = ied;
}
}那就这样用吧
@PersistenceContext
private EntityManager em;或
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("com.sof");
EntityManager em = entityManagerFactory.createEntityManager();使用
List<Details> details = em.createQuery(
"SELECT NEW com.sof.type.Details(itr.iteration_name, prj.project_name, itr.isd, itr.ied) " +
"FROM RetrospectiveInfo retro, " +
" IterationInfo itr, " +
" ProjectInfo prj " +
"WHERE retro.retrospective_id = :userId " +
"AND retro.project_id = prj.project_id " +
"AND retro.iteration_id = itr.iteration_id", Details.class)
.setParameter("userId", userid)
.getResultList();https://stackoverflow.com/questions/41837063
复制相似问题