我在Entity类中有以下JPQL
select new test.entity.Emp(o.empNo, o.empName) from Emp o
和服务层
@GET
@Path("/results")
@Produces(MediaType.APPLICATION_JSON)
public List<Emp> findAll() {
Query query = getEntityManager().createNamedQuery("Emp.findAll");
List<Emp> result = query.getResultList();
return result;
}
但是,当我运行时,所有属性都显示在JSON结果中,而不是empNo
和EmpName
。
可能是什么原因?
答案 0 :(得分:1)
您的查询返回新的Emp对象(仅由empNo和empName构造),因此这将是您的JSON字符串的结果 - 整个Emp对象。
创建一个这样的类:
public class EmpDTO {
private String empNo; //or whatever datatype you use...
private String empName;
public EmpDTO(String empNo, String empName) {
this.empNo = empNo;
this.empName = empName;
}
//getters and setters
}
然后编辑您的查询以在构造函数表达式中使用此类(将包从test.dto更改为您创建类的任何内容):
select new test.dto.EmpDTO(o.empNo, o.empName) from Emp o
最后编辑你的代码:
...
public List<EmpDTO> findAll() {
Query query = getEntityManager().createNamedQuery("Emp.findAll");
return query.getResultList();
}
BTW:Emp.findAll
不是命名查询的理想名称。