Class JRJpaDataSource

java.lang.Object
net.sf.jasperreports.engine.data.JRAbstractBeanDataSource
net.sf.jasperreports.jakarta.ejbql.JRJpaDataSource
All Implemented Interfaces:
JRDataSource, JRRewindableDataSource

public class JRJpaDataSource extends JRAbstractBeanDataSource
Java Persistence API data source that uses jakarta.persistence.Query.getResultList().

The query result can be paginated by not retrieving all the rows at once.

Fields are mapped to values in the result following these rules:

  • if the query returns a single object/bean (e.g. SELECT m FROM Movie m or SELECT NEW MovieDescription(m.title, m.genre) FROM Movie m), then the fields are mapped to bean property names.
  • if the query returns multiple objects per row (e.g. SELECT m.title, m.gender FROM Movie m), the fields are mapped using the following syntax: COLUMN_index[.property], with the indexes starting from 1. Example mappings: COLUMN_1, COLUMN_2, COLUMN_2.title, COLUMN_2.movie.title.
Author:
Marcel Overdijk (marceloverdijk@hotmail.com)
See Also:
  • Field Details

    • EXCEPTION_MESSAGE_KEY_INDEX_OUT_OF_BOUNDS

      public static final String EXCEPTION_MESSAGE_KEY_INDEX_OUT_OF_BOUNDS
      See Also:
    • currentRow

      protected Object currentRow
  • Constructor Details

    • JRJpaDataSource

      public JRJpaDataSource(JRJpaQueryExecuter queryExecuter, int pageSize)
  • Method Details

    • fetchPage

      protected void fetchPage()
    • next

      public boolean next()
      Description copied from interface: JRDataSource
      Tries to position the cursor on the next element in the data source.
      Returns:
      true if there is a next record, false otherwise
    • moveFirst

      public void moveFirst()
      Description copied from interface: JRRewindableDataSource
      Moves back to the first element in the data source.
    • getFieldValue

      public Object getFieldValue(JRField field) throws JRException
      Description copied from interface: JRDataSource
      Gets the field value for the current position.
      Returns:
      an object containing the field value. The object type must be the field object type.
      Throws:
      JRException
    • getFieldValueReader

      protected JRJpaDataSource.FieldValueReader getFieldValueReader(JRField field)