Class EmbeddedMapping

  • Direct Known Subclasses:
    EmbeddedElementPCMapping, EmbeddedKeyPCMapping, EmbeddedPCMapping, EmbeddedValuePCMapping

    public abstract class EmbeddedMapping
    extends SingleFieldMapping
    Mapping for an embedded PC object. The PC object can be embedded directly (1-1 relation) or be the element of a collection/array, or be the key/value of a map.

    Note that the mmd can be for the override of an embedded member rather than for the basic member itself. This can be the source of problems when nested. Refer to

    getRealMemberMetaData
    for the (base) metadata of the member that is embedded.
    • Field Detail

      • discrimMetaData

        protected org.datanucleus.metadata.DiscriminatorMetaData discrimMetaData
      • discrimMapping

        protected DiscriminatorMapping discrimMapping
        Mapping for a discriminator (when supporting inherited embedded objects.
      • javaTypeMappings

        protected List<JavaTypeMapping> javaTypeMappings
        Mappings of the fields of the embedded PC.
      • clr

        protected org.datanucleus.ClassLoaderResolver clr
        ClassLoader resolver
      • emd

        protected org.datanucleus.metadata.EmbeddedMetaData emd
        EmbeddedMetaData for the object being embedded.
      • typeName

        protected String typeName
        Type name for the object being embedded.
      • objectType

        protected org.datanucleus.PersistableObjectType objectType
      • embCmd

        protected org.datanucleus.metadata.AbstractClassMetaData embCmd
        MetaData for the embedded class.
    • Constructor Detail

      • EmbeddedMapping

        public EmbeddedMapping()
    • Method Detail

      • initialize

        public void initialize​(org.datanucleus.metadata.AbstractMemberMetaData mmd,
                               Table table,
                               org.datanucleus.ClassLoaderResolver clr)
        Initialize this JavaTypeMapping with the given DatastoreAdapter for the given FieldMetaData.
        Overrides:
        initialize in class SingleFieldMapping
        Parameters:
        table - The datastore container storing this mapping (if any)
        clr - the ClassLoaderResolver
        mmd - FieldMetaData for the field to be mapped (if any)
        Throws:
        org.datanucleus.exceptions.NucleusException - if an error occurs
      • initialize

        public void initialize​(org.datanucleus.metadata.AbstractMemberMetaData mmd,
                               Table table,
                               org.datanucleus.ClassLoaderResolver clr,
                               org.datanucleus.metadata.EmbeddedMetaData emd,
                               String typeName,
                               org.datanucleus.PersistableObjectType objectType)
        Initialize for the specified member.
        Parameters:
        mmd - metadata for the embedded member
        table - Table for persisting this field
        clr - The ClassLoaderResolver
        emd - Embedded MetaData for the object being embedded
        typeName - type of the embedded PC object being stored
        objectType - Object type of the PC object being embedded
      • prepareColumnMapping

        protected void prepareColumnMapping()
        Method to prepare a field mapping for use in the datastore. Overridden so it does nothing
        Overrides:
        prepareColumnMapping in class SingleFieldMapping
      • addJavaTypeMapping

        public void addJavaTypeMapping​(JavaTypeMapping mapping)
        Add a new JavaTypeMapping to manage.
        Parameters:
        mapping - the JavaTypeMapping
      • getNumberOfJavaTypeMappings

        public int getNumberOfJavaTypeMappings()
        Accessor for the number of java type mappings
        Returns:
        Number of java type mappings of the fields of the embedded PC element
      • getJavaTypeMapping

        public JavaTypeMapping getJavaTypeMapping​(int i)
        Accessor for the java type mappings
        Parameters:
        i - the index position of the java type mapping
        Returns:
        the java type mapping
      • getJavaTypeMapping

        public JavaTypeMapping getJavaTypeMapping​(String fieldName)
        Accessor for the sub type mapping for a particular field name
        Parameters:
        fieldName - The field name
        Returns:
        The type mapping for that field in the embedded object
      • getDiscriminatorMapping

        public JavaTypeMapping getDiscriminatorMapping()
      • setObject

        public void setObject​(org.datanucleus.ExecutionContext ec,
                              PreparedStatement ps,
                              int[] param,
                              Object value)
        Mutator for the embedded object in the datastore.
        Overrides:
        setObject in class SingleFieldMapping
        Parameters:
        ec - execution context
        ps - The Prepared Statement
        param - Param numbers in the PreparedStatement for the fields of this object
        value - The embedded object to use
      • setObject

        public void setObject​(org.datanucleus.ExecutionContext ec,
                              PreparedStatement ps,
                              int[] param,
                              Object value,
                              org.datanucleus.state.DNStateManager ownerSM,
                              int ownerFieldNumber)
        Mutator for the embedded object in the datastore.
        Overrides:
        setObject in class JavaTypeMapping
        Parameters:
        ec - ExecutionContext
        ps - The Prepared Statement
        value - The embedded object to use
        ownerSM - StateManager of the owning object containing this embedded object
        ownerFieldNumber - Field number in the owning object where this is stored
        param - Param numbers in the PreparedStatement for the fields of this object
      • getObject

        public Object getObject​(org.datanucleus.ExecutionContext ec,
                                ResultSet rs,
                                int[] param)
        Accessor for the embedded object from the result set
        Overrides:
        getObject in class SingleFieldMapping
        Parameters:
        ec - ExecutionContext
        rs - The ResultSet
        param - Array of param numbers in the ResultSet for the fields of this object
        Returns:
        The embedded object
      • getObject

        public Object getObject​(org.datanucleus.ExecutionContext ec,
                                ResultSet rs,
                                int[] param,
                                org.datanucleus.state.DNStateManager ownerSM,
                                int ownerFieldNumber)
        Accessor for the embedded object from the result set
        Overrides:
        getObject in class JavaTypeMapping
        Parameters:
        ec - ExecutionContext
        rs - The ResultSet
        ownerSM - StateManager of the owning object containing this embedded object
        ownerFieldNumber - Field number in the owning object where this is stored
        param - Array of param numbers in the ResultSet for the fields of this object
        Returns:
        The embedded object
      • getJavaType

        public Class getJavaType()
        Accessor for the Java type being represented here.
        Specified by:
        getJavaType in class JavaTypeMapping
        Returns:
        The Java type
      • getRealMemberMetaData

        public org.datanucleus.metadata.AbstractMemberMetaData getRealMemberMetaData()