Class 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:
    JRJpaQueryExecuter.PROPERTY_JPA_QUERY_PAGE_SIZE
    • Field Detail

      • EXCEPTION_MESSAGE_KEY_INDEX_OUT_OF_BOUNDS

        public static final String EXCEPTION_MESSAGE_KEY_INDEX_OUT_OF_BOUNDS
        See Also:
        Constant Field Values
      • currentRow

        protected Object currentRow
    • Constructor Detail

      • JRJpaDataSource

        public JRJpaDataSource​(JRJpaQueryExecuter queryExecuter,
                               int pageSize)
    • Method Detail

      • 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