public class JRJpaQueryExecuter extends JRAbstractQueryExecuter
javax.persistence.EntityManager
is needed.
When running or filling reports the em
need to be supplied with the named parameter JRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER
.
Example:
Map parameters = new HashMap();
EntityManager em = emf.createEntityManager();
parameters.put(JRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER, em);
JasperRunManager.runReportToPdfFile(fileName, parameters);
When dealing with large result sets, pagination can be used by setting the JRJpaQueryExecuterFactory.PROPERTY_JPA_QUERY_PAGE_SIZE
property in the report template.
Example:
<property name="net.sf.jasperreports.ejbql.query.page.size" value="100"/>
Implementation-specific query hints can be set either using report properties in the report template,
or by supplying the named parameter JRJpaQueryExecuterFactory.PARAMETER_JPA_QUERY_HINTS_MAP
containing a java.util.Map
with named/value query hints.
Example using report property:
<property name="net.sf.jasperreports.ejbql.query.hint.fetchSize" value="100"/>
The name of the query hint need to be prefixed with net.sf.jasperreports.ejbql.query.hint.
.
Above example will set a query hint with the name fetchSize
and the String
value 100
.
Example using map:
Map hints = new HashMap();
hints.put("fetchSize", Integer.valueOf(100));
hints.put("anyName", anyObject());
Map parameters = new HashMap();
EntityManager em = emf.createEntityManager();
parameters.put(JRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER, em);
parameters.put(JRJpaQueryExecuterFactory.PARAMETER_JPA_QUERY_HINTS_MAP, hints);
JasperRunManager.runReportToPdfFile(fileName, parameters);
Note that when using report properties only String
values can be set as query hint.
When using a query hints map, any Object
can be set as value.JRJpaQueryExecuterFactory
JRAbstractQueryExecuter.QueryParameter, JRAbstractQueryExecuter.QueryParameterEntry, JRAbstractQueryExecuter.QueryParameterVisitor, JRAbstractQueryExecuter.ValuedQueryParameter, JRAbstractQueryExecuter.VisitExceptionWrapper
Modifier and Type | Field and Description |
---|---|
protected static java.lang.String |
CANONICAL_LANGUAGE |
CLAUSE_POSITION_ID, clauseFunctions, dataset, EXCEPTION_MESSAGE_KEY_NUMERIC_TYPE_REQUIRED, EXCEPTION_MESSAGE_KEY_PARAMETER_NOT_FOUND, EXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_CIRCULARLY_NESTED_PARAMETER, EXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_ID_FIRST_TOKEN_MISSING, EXCEPTION_MESSAGE_KEY_QUERY_CLAUSE_NOT_FOUND, EXCEPTION_MESSAGE_KEY_UNSUPPORTED_PARAMETER_TYPE, GET_COLLECTED
Constructor and Description |
---|
JRJpaQueryExecuter(JasperReportsContext jasperReportsContext,
JRDataset dataset,
java.util.Map<java.lang.String,? extends JRValueParameter> parameters) |
JRJpaQueryExecuter(JRDataset dataset,
java.util.Map<java.lang.String,? extends JRValueParameter> parameters)
Deprecated.
|
Modifier and Type | Method and Description |
---|---|
boolean |
cancelQuery()
Cancels the query if it's currently running.
|
void |
close()
Closes resources kept open during the data source iteration.
|
JRDataSource |
createDatasource()
Executes the query and creates a
JRDataSource out of the result. |
protected void |
createQuery(java.lang.String queryString)
Creates the EJBQL query object.
|
protected JRDataSource |
createResultDatasource()
Creates a data source out of the query result.
|
protected java.lang.String |
getCanonicalQueryLanguage()
Returns a canonical query language for this query executer implementation.
|
protected java.lang.String |
getEjbqlParameterName(java.lang.String parameterName) |
protected java.lang.String |
getParameterReplacement(java.lang.String parameterName)
Returns the replacement text for a query parameter.
|
java.util.List<?> |
getResultList()
Runs the query by calling
javax.persistence.Query.getResultList . |
java.util.List<?> |
getResultList(int firstIndex,
int resultCount)
Returns a page of the query results by calling
javax.persistence.Query.getResultList . |
addQueryMultiParameters, addQueryMultiParameters, addQueryParameter, addQueryParameter, appendClauseChunk, appendParameterChunk, appendParameterClauseChunk, appendQueryChunk, appendTextChunk, applyClause, checkParameter, findExtensionQueryFunction, getBooleanParameter, getBooleanParameter, getBooleanParameterOrProperty, getBooleanParameterOrProperty, getCollectedParameterNames, getCollectedParameters, getJasperReportsContext, getParameter, getParameterValue, getParameterValue, getPropertiesUtil, getQueryString, getStringParameter, getStringParameterOrProperty, getValueParameter, getValueParameter, parameterHasValue, parseQuery, registerClauseFunction, resolveFunction, unregisterClauseFunction, visitQueryParameters
protected static final java.lang.String CANONICAL_LANGUAGE
public JRJpaQueryExecuter(JasperReportsContext jasperReportsContext, JRDataset dataset, java.util.Map<java.lang.String,? extends JRValueParameter> parameters)
public JRJpaQueryExecuter(JRDataset dataset, java.util.Map<java.lang.String,? extends JRValueParameter> parameters)
JRJpaQueryExecuter(JasperReportsContext, JRDataset, Map)
.protected java.lang.String getCanonicalQueryLanguage()
JRAbstractQueryExecuter
The canonical language is used to retrieve extensions for the query executer.
The default implementation returns the runtime query language used in the dataset, but query executer implementations should override this method and return a fixed language.
getCanonicalQueryLanguage
in class JRAbstractQueryExecuter
public JRDataSource createDatasource() throws JRException
JRQueryExecuter
JRDataSource
out of the result.JRDataSource
wrapping the query execution result.JRException
protected void createQuery(java.lang.String queryString)
queryString
- the query stringprotected JRDataSource createResultDatasource()
public void close()
JRQueryExecuter
createDatasource
.public boolean cancelQuery() throws JRException
JRQueryExecuter
true
if and only if the query was running and it has been canceledJRException
protected java.lang.String getParameterReplacement(java.lang.String parameterName)
JRAbstractQueryExecuter
getParameterReplacement
in class JRAbstractQueryExecuter
parameterName
- the parameter nameJRQueryChunk.TYPE_PARAMETER
protected java.lang.String getEjbqlParameterName(java.lang.String parameterName)
public java.util.List<?> getResultList()
javax.persistence.Query.getResultList
.
All the result rows are returned.public java.util.List<?> getResultList(int firstIndex, int resultCount)
javax.persistence.Query.getResultList
.firstIndex
- the index of the first row to returnresultCount
- the number of rows to return© 2001-2014 TIBCO Software Inc. www.jaspersoft.com