Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## net.sf.jasperreports.engine.query
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, an `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.` (`JRJpaQueryExecuterFactory.PROPERTY_JPA_QUERY_HINT_PREFIX`). 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.

Version:
  $Id: JRJpaQueryExecuter.java 3689 2010-04-06 11:33:27Z shertage $
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`

Field Summary

Fields inherited from class net.sf.jasperreports.engine.query.JRAbstractQueryExecuter
`CLAUSE_POSITION_ID, clauseFunctions, dataset`

Constructor Summary
`JRJpaQueryExecuter(JRDataset dataset, java.util.Map parameters)`

Method Summary
`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` | `getEjbqlParameterName(java.lang.String parameterName)`
`protected java.lang.String` | `getParameterReplacement(java.lang.String parameterName)` Returns the replacement text for a query paramter.
`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`.

Methods inherited from class net.sf.jasperreports.engine.query.JRAbstractQueryExecuter
`addQueryMultiParameters, addQueryParameter, appendClauseChunk, appendParameterChunk, appendParameterClauseChunk, appendQueryChunk, appendTextChunk, applyClause, checkParameter, getCollectedParameterNames, getCollectedParameters, getParameter, getParameterValue, getParameterValue, getQueryString, getValueParameter, getValueParameter, parseQuery, registerClauseFunction, resolveFunction, unregisterClauseFunction`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### JRJpaQueryExecuter

    public JRJpaQueryExecuter(JRDataset dataset,
                              java.util.Map parameters)

Method Detail

### createDatasource

    public JRDataSource createDatasource()
                                  throws JRException

  Description copied from interface: `JRQueryExecuter`
  Executes the query and creates a `JRDataSource` out of the result.

  Returns:
    a `JRDataSource` wrapping 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: `JRQueryExecuter`
  Closes 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 of `createDatasource`.

### cancelQuery

    public boolean cancelQuery()
                        throws JRException

  Description copied from interface: `JRQueryExecuter`
  Cancels 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:
    `true` if 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: `JRAbstractQueryExecuter`
  Returns the replacement text for a query paramter.

  Specified by:
    `getParameterReplacement` in class `JRAbstractQueryExecuter`
  Parameters:
    `parameterName` - the paramter 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 calling `javax.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 calling `javax.persistence.Query.getResultList`.

  Parameters:
    `firstIndex` - the index of the first row to return
    `resultCount` - the number of rows to return
  Returns:
    result row list

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

© 2001-2010 Jaspersoft Corporation www.jaspersoft.com