Как вернуть список объекта, который не является сущностью из типизированного запроса в спящем режиме? - PullRequest
1 голос
/ 01 октября 2019

Мне нужно извлечь несколько полей из класса сущностей Employee, добавить несколько дополнительных жестко закодированных полей и вернуть результат с помощью предложения GROUP BY.

Ниже приведен код, который я пробовал:

String query = "SELECT emp.category, emp.salary  0 as somevalue, 0 as dummy FROM employee emp "
                + "WHERE emp.date = :date AND emp.class = :class AND emp.classificationDetail.shortDescription = :classificationType GROUP BY emp.category";

        TypedQuery<CustomEmployee> typQuery = entityManager.createQuery(query, CustomEmployee.class);

        typQuery.setParameter("date", req.getDate());
        typQuery.setParameter("class", req.getClass());


        return typQuery.getResultList();

Но я получаю исключение, что не могу создать TypedQuery для запроса с более чем одним возвратом, используя запрошенный тип результата.

Как этого добиться. Спасибо.

1 Ответ

1 голос
/ 02 октября 2019

Сначала проверьте эту часть: emp.salary 0 as somevalue. Это должно быть либо emp.salary as somevalue, либо 0 as somevalue, но не оба одновременно.

Определите класс следующим образом (для краткости; я использую публичные свойства, но вы можете изменить его, если хотите):

public class CustomEmployee {
    public String category;
    public Double salary;
    public Double dummy;
    ...
}

Используйте его в запросе следующим образом:

String query = "SELECT new mypackage.CategorySalary( " +
    "    emp.category, " +
    "    emp.salary as somevalue, " +
    "    0 as dummy " +
    ") from ...  " +
    "WHERE ...  ";

TypedQuery<CustomEmployee> typQuery = entityManager.createQuery(query, CustomEmployee.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...