Class PersistentClassROF<T>

java.lang.Object
org.datanucleus.store.rdbms.query.AbstractROF<T>
org.datanucleus.store.rdbms.query.PersistentClassROF<T>
Type Parameters:
T - Type of the persistent object that this creates
All Implemented Interfaces:
ResultObjectFactory<T>

public final class PersistentClassROF<T> extends AbstractROF<T>
Result-object factory that takes a JDBC ResultSet, a results mapping, and creates a persistable object instance for each row in the ResultSet. We use information in the result set to determine the object type; this can be a discriminator column, or can be a special "NucleusType" column defined just for result processing.
  • Field Details

    • rootCmd

      protected final org.datanucleus.metadata.AbstractClassMetaData rootCmd
      Metadata for the (root) persistable candidate class.
    • persistentClass

      protected Class<T> persistentClass
      Persistent class that this factory will generate (may be the root class).
    • resultMapping

      protected StatementClassMapping resultMapping
      Mapping of the results to members of this class (and sub-objects).
    • resultSetGetter

      protected ResultSetGetter resultSetGetter
    • mappingDefinition

      protected StatementClassMapping mappingDefinition
    • mappedFieldNumbers

      protected int[] mappedFieldNumbers
    • resolvedClasses

      private Map<String,Class> resolvedClasses
      Resolved classes for metadata / discriminator keyed by class names.
  • Constructor Details

    • PersistentClassROF

      public PersistentClassROF(org.datanucleus.ExecutionContext ec, ResultSet rs, org.datanucleus.FetchPlan fp, StatementClassMapping resultMapping, org.datanucleus.metadata.AbstractClassMetaData acmd, Class<T> persistentClass)
      Constructor.
      Parameters:
      ec - ExecutionContext
      rs - ResultSet being processed
      fp - FetchPlan
      resultMapping - Mapping information for the result set and how it maps to the class
      acmd - MetaData for the (root) candidate class
      persistentClass - Class that this factory will create instances of (or subclasses)
  • Method Details

    • getResultSet

      public ResultSet getResultSet()
      Description copied from interface: ResultObjectFactory
      Accessor for the JDBC ResultSet being processed.
      Specified by:
      getResultSet in interface ResultObjectFactory<T>
      Overrides:
      getResultSet in class AbstractROF<T>
      Returns:
      The ResultSet
    • getObject

      public T getObject()
      Method to convert the current ResultSet row into a persistable Object.
      Returns:
      The persistable object.
    • findObjectWithIdAndLoadFields

      private T findObjectWithIdAndLoadFields(Object id, int[] membersToLoad, int[] membersToStore, Class<?> pcClass, org.datanucleus.metadata.AbstractClassMetaData cmd, Object surrogateVersion)
      Method to lookup an object for an id, and specify its FieldValues using the ResultSet. Works for all identity types.
      Parameters:
      id - The identity (DatastoreId, Application id, or SCOID when nondurable)
      membersToLoad - Absolute numbers of members to load
      membersToStore - Absolute numbers of members to store in StateManager (for later)
      pcClass - The class of the required object if known
      cmd - Metadata for the type
      surrogateVersion - The version when the object has a surrogate version field
      Returns:
      The persistable object for this id