如何将一组对象发送到需要所有对象的"id"的NamedQuery.

Pau*_*ker 0 java arrays jpa

我正在根据从jsp页面中的多选表单元素收到的信息构建报告.

在我的存储库类中,我从该元素获取了一个对象数组.我需要为getId这些对象中的每一个调用该函数并将这些id发送给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;
    }
Run Code Online (Sandbox Code Playgroud)

通过请求查询:

    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
Run Code Online (Sandbox Code Playgroud)

Boh*_*ian 5

我试着打电话给Madame Mystique寻求帮助,找出你的查询实际上是什么,但没有运气,所以我只是去找它......

您的命名查询应如下所示:

select x
from MyClass x
where x.children.id in (:ids)
Run Code Online (Sandbox Code Playgroud)

然后将你的ID列入清单

List<Integer> ids = new ArrayList<Integer>();
ids.add(someid);  // etc
Run Code Online (Sandbox Code Playgroud)

然后使用它在您的查询中指定它

.setParameter("ids", ids)
Run Code Online (Sandbox Code Playgroud)