How to register QueryExecuterFactory in jasper reports in java

I have implemented JRQueryExecuter and want to use it in a report. Using iReport I was able to register and use executer.

Now I want to use it in a Java application, but I can not find any resources how to register a factory.

I thought it was enough to implement the implementation in the classpath, but I get the following exception:

Caused by: net.sf.jasperreports.engine.JRException: No query executer factory class registered for tmql queries.
at net.sf.jasperreports.engine.query.DefaultQueryExecuterFactoryBundle.getQueryExecuterFactory(DefaultQueryExecuterFactoryBundle.java:80)
at net.sf.jasperreports.engine.util.JRQueryExecuterUtils.getQueryExecuterFactory(JRQueryExecuterUtils.java:57)
at net.sf.jasperreports.engine.design.JRDesignDataset.queryLanguageChanged(JRDesignDataset.java:1006)

Can someone give me a hint?

Regards Hannes

+5
source share
3 answers

Using jasperreports 5.2.0, you need to:

  • Create your own YourCustomExecuterFactory YourCustomExecuterFactoryclass QueryExecuterFactory.
  • YourCustomExecuterFactory JRQueryExecuter QueryExecuterFactory.createQueryExecuter(..)
  • (tmql?) factory. jasperresports.properties : net.sf.jasperreports.query.executer.factory.tmql=your.package.YourCustomExecuterFactory

, -.

+3

:

JasperReport jasperReport = <...>
jasperReport.setProperty(JRQueryExecuterFactory.QUERY_EXECUTER_FACTORY_PREFIX + "<query language>", "<value>");

?

+1

Set the property before calling JasperCompileManager.

Example below using the plsql query language:

JRProperties.setProperty(QueryExecuterFactory.QUERY_EXECUTER_FACTORY_PREFIX+"plsql"
                            ,"com.jaspersoft.jrx.query.PlSqlQueryExecuterFactory");
JasperReport jasperReport =
            JasperCompileManager.compileReport(sourceFile);
+1
source

All Articles