如何将一组对象发送到需要所有对象的“id”的NamedQuery。

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

在我的存储库类中,我从该元素获取了一个对象数组。 我需要为这些对象中的每一个调用getId函数,并将这些id发送到NamedQuery

这是一个帮助解释的代码示例。 我知道如何处理单个对象,但是在.setParameter(1, employees[].getId())部分中丢失了.setParameter(1, employees[].getId())对象。

  public List getFormInformation( Employee[] employees) throws NoDataFoundException { List 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 

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

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

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

然后将你的ID列入清单

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

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

 .setParameter("ids", ids)