Я новичок в JPA. Так что мой вопрос должен быть настолько простым для некоторых.
Ниже приведен простой запрос в SQL, который я хотел бы преобразовать в JPA. У меня уже есть класс сущности называется TimeEnt
.
SELECT
SUM(TimeEntryActualHours) as UnBilledHrs,
SUM (TimeEntryAmount) as UnbilledAmount
FROM TimeEnt WHERE MatterID = 200
Язык запросов JPA поддерживает агрегатные функции в предложении SELECT, такие как AVG, COUNT, MAX, MIN, SUM, и поддерживает несколько select_expressions в предложении SELECT, в котором в случае, если результатом будет массив List
из Object
( Object []
). Из спецификации JPA:
4.8.1 Тип результата предложения SELECT
...
Тип результата оператора SELECT предложение определяется результатом типы select_expressions содержится в нем. Если несколько select_expressions используются в Предложение SELECT, результат запроса имеет тип
Object []
, а элементы в этом результате соответствуют в порядок в порядке их спецификация в предложении SELECT и по типу к типам результатов каждое из select_expressions .
Другими словами, тот тип запроса, который вы упомянули в комментарии (и поскольку вы не предоставили свою сущность, я буду основывать свой ответ на вашем примере), не проблема. Вот пример кода:
String qlString = "SELECT AVG(x.price), SUM(x.stocks) FROM Magazine x WHERE ...";
Query q = em.createQuery(qlString);
Object[] results = (Object[]) q.getSingleResult();
for (Object object : results) {
System.out.println(object);
}
Обратите внимание на спецификацию EJB Query Language .
Идиома очень похожа на стандартный SQL
EntityManager em = ...
Query q = em.createQuery ("SELECT AVG(x.price) FROM Magazine x");
Number result = (Number) q.getSingleResult ();
С уважением,