Eclipselink JPA-SQL查询结果映射到Java对象

时间:2018-08-30 01:09:58

标签: java sql jpa eclipselink

我试图从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

1 个答案:

答案 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)的开发人员