Class AbstractRDBMSQueryResult<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
org.datanucleus.store.query.AbstractQueryResult<E>
org.datanucleus.store.rdbms.query.AbstractRDBMSQueryResult<E>
All Implemented Interfaces:
Serializable, Iterable<E>, Collection<E>, List<E>, SequencedCollection<E>, org.datanucleus.store.query.QueryResult<E>
Direct Known Subclasses:
ForwardQueryResult, ScrollableQueryResult

public abstract class AbstractRDBMSQueryResult<E> extends org.datanucleus.store.query.AbstractQueryResult<E>
Abstract representation of a QueryResult for RDBMS queries. Based on the assumption that we have a JDBC ResultSet, and we are extracting the results using a ResultObjectFactory.
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • rs

      protected ResultSet rs
      The ResultSet containing the results.
    • rof

      protected ResultObjectFactory<E> rof
      ResultObjectFactory for converting the result set into objects.
    • fp

      protected org.datanucleus.FetchPlan fp
    • bulkLoadedMmds

      protected Collection<org.datanucleus.metadata.AbstractMemberMetaData> bulkLoadedMmds
      The members (of the candidate, if any) that are bulk loaded.
    • bulkLoadedValueByMemberNumber

      protected Map<Object,Map<Integer,Object>> bulkLoadedValueByMemberNumber
      Map of bulk-load (candidate) field values, keyed by the "id" of the candidate object. The value is a "Map<fieldNumber, fieldValue>".
    • closeStatementWithResultSet

      protected boolean closeStatementWithResultSet
      Default to closing the statement when closing the resultSet, but allow override.
    • applyRangeChecks

      boolean applyRangeChecks
  • Constructor Details

    • AbstractRDBMSQueryResult

      public AbstractRDBMSQueryResult(org.datanucleus.store.query.Query query, ResultObjectFactory<E> rof, ResultSet rs, org.datanucleus.FetchPlan fp)
      Constructor of the result from a Query.
      Parameters:
      query - The Query
      rof - The factory to retrieve results from
      rs - The ResultSet from the Query Statement
      fp - FetchPlan
  • Method Details

    • setCloseStatementWithResultSet

      public void setCloseStatementWithResultSet(boolean flag)
    • registerMemberBulkResultSet

      public void registerMemberBulkResultSet(IteratorStatement iterStmt, ResultSet rs)
    • initialise

      public abstract void initialise() throws SQLException
      Throws:
      SQLException
    • addOwnerMemberCollectionElement

      private void addOwnerMemberCollectionElement(org.datanucleus.metadata.AbstractMemberMetaData mmd, Object owner, Object element)
    • disconnect

      public void disconnect()
      Method to disconnect the results from the ExecutionContext, meaning that thereafter it just behaves like a List. All remaining results are read in at this point (unless selected not to be).
      Specified by:
      disconnect in interface org.datanucleus.store.query.QueryResult<E>
      Overrides:
      disconnect in class org.datanucleus.store.query.AbstractQueryResult<E>
    • close

      public void close()
      Method to close the results, meaning that they are inaccessible after this point.
      Specified by:
      close in interface org.datanucleus.store.query.QueryResult<E>
      Overrides:
      close in class org.datanucleus.store.query.AbstractQueryResult<E>
    • closeResults

      protected void closeResults()
      Internal method to close the ResultSet.
      Specified by:
      closeResults in class org.datanucleus.store.query.AbstractQueryResult<E>
    • equals

      public boolean equals(Object o)
      Specified by:
      equals in interface Collection<E>
      Specified by:
      equals in interface List<E>
      Specified by:
      equals in class org.datanucleus.store.query.AbstractQueryResult<E>
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface Collection<E>
      Specified by:
      hashCode in interface List<E>
      Overrides:
      hashCode in class org.datanucleus.store.query.AbstractQueryResult<E>