我试图从getResultList()返回类型列表,但是在将sql结果列表映射到类型列表时遇到问题。它不断返回通用对象列表。这是我当前的代码:
EntityManager em = this.emPool.createEntityManager();
TypedQuery<Runtime> query = Runner.getRuntime(em);
List<Runtime> runtimeList = query.getResultList();
另外,在Runner类中,我有这个:
public static TypedQuery<Runtime> getRuntime(EntityManager em) {
return em.createNamedQuery(COUNT_RUNTIMES_SQL_EXPRESSION, Runtime.class);
}
这是查询:
SELECT u.runner_id as runnerId, COUNT(u.times) FROM RUNNER u"
+ " WHERE u.age = :60 GROUP by u.runner_id
任何提示将不胜感激。
注意:我正在运行的查询是报表查询->一个简单的group by and count
答案 0 :(得分:0)
您需要在select子句中使用构造函数表达式。例如,
SELECT new com.example.Runtime(u.runner_id as runnerId, COUNT(u.times)) FROM RUNNER u"
+ " WHERE u.age = :60 GROUP by u.runner_id
在类Runtime中定义相应的构造函数。
如果使用Criteria API,则应使用CriteriaBuilder.construt(...)。已针对标准API用Cmobilecom JPA进行了测试。
免责声明:我是Cmobilecom JPA(适用于Java和android)的开发人员