Передача списка значений в NativeQuery исполняемый в отчете с датасетом groovy

Добрый день.

Существует ли возможность передать список значений, который потом можно использовать в конструкции IN в NativeQuery, исполняемый в отчете с датасетом groovy? Список значений получаю из параметров отчета, как List of entities.
Возможно по сэмплу будет нагляднее. Хочу как-то так:

transactional { em -> 
    resultList = em.createNativeQuery(
    	"SELECT format(i.DATE_ACT, 'yyyy-MM') as month, " +
            ",count(*) AS 'qty' " +
            "FROM WEDB_ACTIVITY i " +
            "GROUP BY format(i.DATE_ACT, 'yyyy-MM') " +
            "WHERE i.COUNTRY_ID IN #countries ")
        .setParameter("countries", params['countries'])
        .resultList
}

Добрый день!

Если вы хотите воспользоваться именно NativeQuery, то со списком как параметром могут возникать проблемы. По умолчанию, NativeQuery в JPA не поддерживают такие параметры, но некоторые типы баз данных имеют их поддержку. В данном случае можно постараться не использовать метод setParameter(), а вставлять значение параметра в формируемую строку запроса. Например:

...
 "WHERE i.COUNTRY_ID IN ( " +
params['countries'].collect { "'$it.id'" }.join(",")  +
")"
...

В данном примере id стран из списка параметров будут собраны в строку через запятую и обрамлённые одинарными кавычками.

С уважением,
Сергей

1 симпатия