我试图从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 -> count
发布于 2018-08-31 05:39:44
您需要在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(...)应该使用。使用Cmobilecom JPA对criteria API进行测试。
免责声明:我是Cmobilecom JPA ( java和android)的开发者
https://stackoverflow.com/questions/52087951
复制相似问题