Я работаю над существующим асинхронным отчетом jasper c в приложении, в котором серверная часть Java отправляет параметр employee_id серверу jasper. Соответствующий файл .jr xml, содержащий имя этого параметра «employee_id», выполняет запрос SQL для извлечения результатов.
Теперь, согласно новым функциям, существует сценарий, когда приложение может отправить более 1000 сотрудников идентификаторы. Итак, со стороны Java я создаю подсписки, каждый из которых содержит не более 1000 элементов. например,
первый подсписок имеет имя параметра как -> first1000_employee_id
второй подсписок имеет имя параметра как -> second1000_employee_id
Соответствующий файл .jr xml также был изменен, чтобы добавить эти 2 новых параметра и избавился от "employee_id".
Существующий java код:
ReportParameter reportParameter = new ReportParameter();
reportParameter.setName("employee_id");
reportParameter.setValues(employeeIds); // employeeIds is List<String>
reportParameters.add(reportParameter);
Новый java код:
ReportParameter reportParameterFirst1000 = new ReportParameter();
reportParameterFirst1000.setName("first1000_employee_id");
reportParameterFirst1000.setValues(first1000EmployeeIds);
reportParameters.add(reportParameterFirst1000);
ReportParameter reportParameterSecond1000 = new ReportParameter();
reportParameterSecond1000.setName("second1000_employee_id");
reportParameterSecond1000.setValues(second1000EmployeeIds);
reportParameters.add(reportParameterSecond1000);
ReportParameters parameters = new ReportParameters();
parameters.setReportParameters(reportParameters);
reportExecutionRequest.setParameters(parameters);
Существующий .jr xml SQL запрос:
SELECT
category_desc,
SUM(cnt)
FROM (
SELECT
category_desc,
cnt
FROM
TXN_MV
WHERE
( employee_id IN ('0001022051') )
) x
GROUP BY
category_desc
HAVING
SUM(cnt) > 0
ORDER BY
cnt DESC
Новый .jr xml SQL запрос:
SELECT
category_desc,
SUM(cnt)
FROM (
SELECT
category_desc,
cnt
FROM
TXN_MV
WHERE
( first1000_employee_id IN ('0001022051')
OR second1000_employee_id IN ('0001022052') )
) x
GROUP BY
category_desc
HAVING
SUM(cnt) > 0
ORDER BY
cnt DESC
Теперь, когда я публикую sh это В отчете на сервер jasper приложение выбирает записи для всех идентификаторов сотрудников, а не те, которые я указываю в подсписках на основе нового запроса SQL в .jr xml. Условие WHERE для вновь определенных идентификаторов сотрудников игнорируется, и поэтому выполняется выборка всех записей из БД.
Я отладил и вижу, что все имена параметров работают правильно.
Не могли бы вы помочь, в чем может быть проблема?