There is probably problem with AbstractDbDataLoader.processQueryTemplate, which is using GStringTemplateEngine shared for both SQL and JPQL query preprocessing.
When you are using JPQL report type you are querying against metaclasses eg.
select e.login as login from sec$User e where e.id = ${userId}
When you check
preprocess query as Groovy template
This query is being processed by mentioned function, which is looking for $ signs, it leads to transforming metaclass name such as sec$User. If you dont have parameter User it will lead to
No such property: User for class: groovy.lang.Binding
Otherwise if you have such parameter it will transform eg.
You need to add escapes since groovy pre-processing is on:
select e.login as login from sec\$User e where e.id = \${userId}
It is seems more like a normal behavior for groovy-template.
Thank you for explanation, when I went through groovy docs they really mapped tons of features to dollar sign and escaping it would be really inappropriate.