Package net.sf.jasperreports.j2ee.ejbql
Class JRJpaQueryExecuter
- java.lang.Object
-
- net.sf.jasperreports.engine.query.JRAbstractQueryExecuter
-
- net.sf.jasperreports.j2ee.ejbql.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 parameterEjbqlConstants.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(EjbqlConstants.PARAMETER_JPA_ENTITY_MANAGER, em); JasperRunManager.runReportToPdfFile(fileName, parameters);
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"/>
EjbqlConstants.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(EjbqlConstants.PARAMETER_JPA_ENTITY_MANAGER, em); parameters.put(EjbqlConstants.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 StringCANONICAL_LANGUAGEstatic StringPROPERTY_JPA_QUERY_HINT_PREFIXProperty specifying the prefix for EJBQL query hints.static StringPROPERTY_JPA_QUERY_PAGE_SIZEProperty specifying the number of result rows to be retrieved at once.-
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, Map<String,? extends JRValueParameter> parameters)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancancelQuery()voidclose()JRDataSourcecreateDatasource()protected voidcreateQuery(String queryString)Creates the EJBQL query object.protected JRDataSourcecreateResultDatasource()Creates a data source out of the query result.protected StringgetCanonicalQueryLanguage()protected StringgetEjbqlParameterName(String parameterName)protected StringgetParameterReplacement(String parameterName)List<?>getResultList()Runs the query by callingjavax.persistence.Query.getResultList.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, getParameterValue, getParameterValue, getPropertiesUtil, getQueryExecutionContext, getQueryString, getRepositoryContext, getStringParameter, getStringParameterOrProperty, getValueParameter, getValueParameter, parameterHasValue, parseQuery, registerClauseFunction, resolveFunction, unregisterClauseFunction, visitQueryParameters
-
-
-
-
Field Detail
-
CANONICAL_LANGUAGE
public static final String CANONICAL_LANGUAGE
- See Also:
- Constant Field Values
-
PROPERTY_JPA_QUERY_PAGE_SIZE
public static final String PROPERTY_JPA_QUERY_PAGE_SIZE
Property specifying the number of result rows to be retrieved at once. Result pagination is implemented byjavax.persistence.Query.setFirstResult()andjavax.persistence.Query.setMaxResults(). By default, all the rows are retrieved (no result pagination is performed).- See Also:
- Constant Field Values
-
PROPERTY_JPA_QUERY_HINT_PREFIX
public static final String PROPERTY_JPA_QUERY_HINT_PREFIX
Property specifying the prefix for EJBQL query hints.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
JRJpaQueryExecuter
public JRJpaQueryExecuter(JasperReportsContext jasperReportsContext, JRDataset dataset, Map<String,? extends JRValueParameter> parameters)
-
-
Method Detail
-
getCanonicalQueryLanguage
protected String getCanonicalQueryLanguage()
- Overrides:
getCanonicalQueryLanguagein classJRAbstractQueryExecuter
-
createDatasource
public JRDataSource createDatasource() throws JRException
- Throws:
JRException
-
createQuery
protected void createQuery(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()
-
cancelQuery
public boolean cancelQuery() throws JRException- Throws:
JRException
-
getParameterReplacement
protected String getParameterReplacement(String parameterName)
- Specified by:
getParameterReplacementin classJRAbstractQueryExecuter
-
getResultList
public 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 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
-
-