Class JpaCursorItemReader<T>

Type Parameters:
T - type of items to read
All Implemented Interfaces:
ItemReader<T>, ItemStream, ItemStreamReader<T>, org.springframework.beans.factory.InitializingBean

public class JpaCursorItemReader<T> extends AbstractItemCountingItemStreamItemReader<T> implements org.springframework.beans.factory.InitializingBean
ItemStreamReader implementation based on JPA Query.getResultStream(). It executes the JPQL query when initialized and iterates over the result set as AbstractItemCountingItemStreamItemReader.read() method is called, returning an object corresponding to the current row. The query can be set directly using setQueryString(String), or using a query provider via setQueryProvider(JpaQueryProvider).

The implementation is not thread-safe.

Since:
4.3
Author:
Mahmoud Ben Hassine, Jinwoo Bae
  • Constructor Details

  • Method Details

    • setEntityManagerFactory

      public void setEntityManagerFactory(jakarta.persistence.EntityManagerFactory entityManagerFactory)
      Set the JPA entity manager factory.
      Parameters:
      entityManagerFactory - JPA entity manager factory
    • setQueryProvider

      public void setQueryProvider(JpaQueryProvider queryProvider)
      Set the JPA query provider.
      Parameters:
      queryProvider - JPA query provider
    • setQueryString

      public void setQueryString(String queryString)
      Set the JPQL query string.
      Parameters:
      queryString - JPQL query string
    • setParameterValues

      public void setParameterValues(Map<String,Object> parameterValues)
      Set the parameter values to be used for the query execution.
      Parameters:
      parameterValues - the values keyed by parameter names used in the query string.
    • setHintValues

      public void setHintValues(Map<String,Object> hintValues)
      Set the query hint values for the JPA query. Query hints can be used to give instructions to the JPA provider.
      Parameters:
      hintValues - a map where each key is the name of the hint, and the corresponding value is the hint's value.
      Since:
      5.2
    • afterPropertiesSet

      public void afterPropertiesSet() throws Exception
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      Throws:
      Exception
    • doOpen

      protected void doOpen() throws Exception
      Description copied from class: AbstractItemCountingItemStreamItemReader
      Open resources necessary to start reading input.
      Specified by:
      doOpen in class AbstractItemCountingItemStreamItemReader<T>
      Throws:
      Exception - Allows subclasses to throw checked exceptions for interpretation by the framework
    • doRead

      protected T doRead()
      Description copied from class: AbstractItemCountingItemStreamItemReader
      Read next item from input.
      Specified by:
      doRead in class AbstractItemCountingItemStreamItemReader<T>
      Returns:
      an item or null if the data source is exhausted
    • update

      public void update(ExecutionContext executionContext) throws ItemStreamException
      Description copied from interface: ItemStream
      Indicates that the execution context provided during open is about to be saved. If any state is remaining, but has not been put in the context, it should be added here.
      Specified by:
      update in interface ItemStream
      Overrides:
      update in class AbstractItemCountingItemStreamItemReader<T>
      Parameters:
      executionContext - to be updated
      Throws:
      ItemStreamException
    • doClose

      protected void doClose()
      Description copied from class: AbstractItemCountingItemStreamItemReader
      Specified by:
      doClose in class AbstractItemCountingItemStreamItemReader<T>