Class JRJpaQueryExecuter
- java.lang.Object
-
- net.sf.jasperreports.engine.query.JRAbstractQueryExecuter
-
- net.sf.jasperreports.engine.query.JRJpaQueryExecuter
-
- All Implemented Interfaces:
JRQueryExecuter
public class JRJpaQueryExecuter extends JRAbstractQueryExecuter
EJBQL query executer that uses the Java Persistence API. To use EJBQL in queries, anjavax.persistence.EntityManageris needed. When running or filling reports theemneed to be supplied with the named parameterJRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER. Example:When dealing with large result sets, pagination can be used by setting theMap parameters = new HashMap(); EntityManager em = emf.createEntityManager(); parameters.put(JRJpaQueryExecuterFactory.PARAMETER_JPA_ENTITY_MANAGER, em); JasperRunManager.runReportToPdfFile(fileName, parameters);
JRJpaQueryExecuterFactory.PROPERTY_JPA_QUERY_PAGE_SIZEproperty in the report template. Example:Implementation-specific query hints can be set either using report properties in the report template, or by supplying the named parameter<property name="net.sf.jasperreports.ejbql.query.page.size" value="100"/>
JRJpaQueryExecuterFactory.PARAMETER_JPA_QUERY_HINTS_MAPcontaining ajava.util.Mapwith named/value query hints. Example using report property:The name of the query hint need to be prefixed with<property name="net.sf.jasperreports.ejbql.query.hint.fetchSize" value="100"/>
net.sf.jasperreports.ejbql.query.hint.. Above example will set a query hint with the namefetchSizeand theStringvalue100. Example using map:Note that when using report properties onlyMap hints = new HashMap(); hints.put("fetchSize", 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);Stringvalues can be set as query hint. When using a query hints map, anyObjectcan be set as value.- Author:
- Marcel Overdijk (marceloverdijk@hotmail.com)
- See Also:
JRJpaQueryExecuterFactory
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class net.sf.jasperreports.engine.query.JRAbstractQueryExecuter
JRAbstractQueryExecuter.QueryParameter, JRAbstractQueryExecuter.QueryParameterEntry, JRAbstractQueryExecuter.QueryParameterVisitor, JRAbstractQueryExecuter.ValuedQueryParameter, JRAbstractQueryExecuter.VisitExceptionWrapper
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringCANONICAL_LANGUAGE-
Fields inherited from class net.sf.jasperreports.engine.query.JRAbstractQueryExecuter
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 Summary
Constructors Constructor Description JRJpaQueryExecuter(JasperReportsContext jasperReportsContext, JRDataset dataset, java.util.Map<java.lang.String,? extends JRValueParameter> parameters)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancancelQuery()Cancels the query if it's currently running.voidclose()Closes resources kept open during the data source iteration.JRDataSourcecreateDatasource()Executes the query and creates aJRDataSourceout of the result.protected voidcreateQuery(java.lang.String queryString)Creates the EJBQL query object.protected JRDataSourcecreateResultDatasource()Creates a data source out of the query result.protected java.lang.StringgetCanonicalQueryLanguage()Returns a canonical query language for this query executer implementation.protected java.lang.StringgetEjbqlParameterName(java.lang.String parameterName)protected java.lang.StringgetParameterReplacement(java.lang.String parameterName)Returns the replacement text for a query parameter.java.util.List<?>getResultList()Runs the query by callingjavax.persistence.Query.getResultList.java.util.List<?>getResultList(int firstIndex, int resultCount)Returns a page of the query results by callingjavax.persistence.Query.getResultList.-
Methods inherited from class net.sf.jasperreports.engine.query.JRAbstractQueryExecuter
addQueryMultiParameters, addQueryMultiParameters, addQueryParameter, addQueryParameter, appendClauseChunk, appendParameterChunk, appendParameterClauseChunk, appendQueryChunk, appendTextChunk, applyClause, checkParameter, findExtensionQueryFunction, getBooleanParameter, getBooleanParameter, getBooleanParameterOrProperty, getBooleanParameterOrProperty, getCollectedParameterNames, getCollectedParameters, getIntegerParameter, getIntegerParameter, getIntegerParameterOrProperty, getIntegerParameterOrProperty, getJasperReportsContext, getParameter, getParameterValue, getParameterValue, getPropertiesUtil, getQueryExecutionContext, getQueryString, getRepositoryContext, getStringParameter, getStringParameterOrProperty, getValueParameter, getValueParameter, parameterHasValue, parseQuery, registerClauseFunction, resolveFunction, unregisterClauseFunction, visitQueryParameters
-
-
-
-
Field Detail
-
CANONICAL_LANGUAGE
public static final java.lang.String CANONICAL_LANGUAGE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
JRJpaQueryExecuter
public JRJpaQueryExecuter(JasperReportsContext jasperReportsContext, JRDataset dataset, java.util.Map<java.lang.String,? extends JRValueParameter> parameters)
-
-
Method Detail
-
getCanonicalQueryLanguage
protected java.lang.String getCanonicalQueryLanguage()
Description copied from class:JRAbstractQueryExecuterReturns a canonical query language for this query executer implementation.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.
- Overrides:
getCanonicalQueryLanguagein classJRAbstractQueryExecuter- Returns:
- a canonical query language
-
createDatasource
public JRDataSource createDatasource() throws JRException
Description copied from interface:JRQueryExecuterExecutes the query and creates aJRDataSourceout of the result.- Returns:
- a
JRDataSourcewrapping the query execution result. - Throws:
JRException
-
createQuery
protected void createQuery(java.lang.String queryString)
Creates the EJBQL query object.- Parameters:
queryString- the query string
-
createResultDatasource
protected JRDataSource createResultDatasource()
Creates a data source out of the query result.- Returns:
- the data source
-
close
public void close()
Description copied from interface:JRQueryExecuterCloses resources kept open during the data source iteration. This method is called after the report is filled or the dataset is iterated. If a resource is not needed after the data source has been created, it should be released at the end ofcreateDatasource.
-
cancelQuery
public boolean cancelQuery() throws JRExceptionDescription copied from interface:JRQueryExecuterCancels the query if it's currently running. This method will be called from a different thread if the client decides to cancel the filling process.- Returns:
trueif and only if the query was running and it has been canceled- Throws:
JRException
-
getParameterReplacement
protected java.lang.String getParameterReplacement(java.lang.String parameterName)
Description copied from class:JRAbstractQueryExecuterReturns the replacement text for a query parameter.- Specified by:
getParameterReplacementin classJRAbstractQueryExecuter- Parameters:
parameterName- the parameter name- Returns:
- the replacement text
- See Also:
JRQueryChunk.TYPE_PARAMETER
-
getEjbqlParameterName
protected java.lang.String getEjbqlParameterName(java.lang.String parameterName)
-
getResultList
public java.util.List<?> getResultList()
Runs the query by callingjavax.persistence.Query.getResultList. All the result rows are returned.- Returns:
- the result of the query as a list
-
getResultList
public java.util.List<?> getResultList(int firstIndex, int resultCount)Returns a page of the query results by callingjavax.persistence.Query.getResultList.- Parameters:
firstIndex- the index of the first row to returnresultCount- the number of rows to return- Returns:
- result row list
-
-