Как отправить отправить массив объектов в NamedQuery, которому нужен «id» всех объектов. - PullRequest
0 голосов
/ 30 июля 2011

Я создаю отчет на основе информации, полученной от элемента формы muti-select на странице jsp.

В моем классе репозитория я получаю массив объектов из этого элемента.Мне нужно вызвать функцию getId для каждого из этих объектов и отправить эти идентификаторы на NamedQuery.

Вот пример кода, который поможет объяснить.Я знаю, как обрабатывать один объект, но с массивом объектов я теряюсь в части .setParameter(1, employees[].getId()).

    public List<RequestByRequester> getFormInformation(
        Employee[] employees) 
        throws NoDataFoundException {

        List<RequestByRequester> resultList = getEm().createNamedQuery(
                "requestByRequestor.getRequestsByRequesters", RequestByRequester.class)
                .setParameter(1, employees[].getId())
                .getResultList();

        return resultList;
    }

По запросу запрос:

    SELECT EMP.EMPL_FIRST_NAME || ' ' || EMP.EMPL_LAST_NAME REQUESTER,
           R.RQST_ID RQST_ID,
           R.TITLE TITLE,
           R.DESCRIPTION DESCR,
           DECODE(R.RESOLUTION_DATE, NULL, 'Open', 'Closed') STAT
   FROM TARTS.REQUESTS R, SYS_EMPLOYEES EMP
  WHERE R.EMPL_ID_REQUESTED_BY = EMP.EMPL_ID
    AND EMP.EMPL_ID IN (?)
  ORDER BY 1, 5 DESC, 2

1 Ответ

5 голосов
/ 30 июля 2011

Я пытался позвонить мадам Мистик, чтобы получить помощь в выяснении того, что на самом деле был ваш запрос, но не повезло, поэтому я просто пойду на него ...

Ваш именованный запрос должен выглядеть примерно такthis:

select x
from MyClass x
where x.children.id in (:ids)

затем добавьте свои идентификаторы в список

List<Integer> ids = new ArrayList<Integer>();
ids.add(someid);  // etc

, затем используйте это, чтобы указать это в своем запросе

.setParameter("ids", ids)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...