Eclipselink jpa - сопоставление результатов sql-запроса с java-объектом - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь вернуть типизированный список из 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

Любые советы будут с благодарностью.

ПРИМЕЧАНИЕ: запрос, который я выполняю, является запросом отчета -> простая группа по количеству

1 Ответ

0 голосов
/ 31 августа 2018

Вам нужно использовать выражение конструктора в предложении 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 для критериев API.

Отказ от ответственности: я являюсь разработчиком Cmobilecom JPA (для Java и Android)

...