Class AbstractCompositeObjectMapping

java.lang.Object
org.eclipse.persistence.core.mappings.CoreMapping<AttributeAccessor,org.eclipse.persistence.internal.sessions.AbstractSession,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
org.eclipse.persistence.mappings.DatabaseMapping
org.eclipse.persistence.mappings.AggregateMapping
org.eclipse.persistence.mappings.foundation.AbstractCompositeObjectMapping
All Implemented Interfaces:
Serializable, Cloneable
Direct Known Subclasses:
EISCompositeObjectMapping, StructureMapping, XMLCompositeObjectMapping

public abstract class AbstractCompositeObjectMapping extends AggregateMapping
Chunks of data from non-relational data sources can have an embedded component objects. These can be mapped using this mapping. The format of the embedded data is determined by the reference descriptor.
See Also:
Author:
Big Country
  • Field Details

    • field

      protected org.eclipse.persistence.internal.helper.DatabaseField field
      The aggregate object is stored in a single field.
    • converter

      protected Converter converter
      Allows user defined conversion between the object attribute value and the database value.
  • Constructor Details

    • AbstractCompositeObjectMapping

      public AbstractCompositeObjectMapping()
      Default constructor.
  • Method Details

    • cascadePerformRemoveIfRequired

      public void cascadePerformRemoveIfRequired(Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, Map visitedObjects)
      INTERNAL: Cascade perform delete through mappings that require the cascade
      Specified by:
      cascadePerformRemoveIfRequired in class DatabaseMapping
    • cascadeDiscoverAndPersistUnregisteredNewObjects

      public void cascadeDiscoverAndPersistUnregisteredNewObjects(Object object, Map newObjects, Map unregisteredExistingObjects, Map visitedObjects, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, Set cascadeErrors)
      INTERNAL: Cascade discover and persist new objects during commit.
      Overrides:
      cascadeDiscoverAndPersistUnregisteredNewObjects in class DatabaseMapping
    • cascadeRegisterNewIfRequired

      public void cascadeRegisterNewIfRequired(Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, Map visitedObjects)
      INTERNAL: Cascade registerNew for Create through mappings that require the cascade
      Specified by:
      cascadeRegisterNewIfRequired in class DatabaseMapping
    • collectFields

      protected Vector collectFields()
      Return the fields mapped by the mapping.
      Overrides:
      collectFields in class DatabaseMapping
    • getConverter

      public Converter getConverter()
      PUBLIC: Return the converter on the mapping. A converter can be used to convert between the object's value and database value of the attribute.
    • getField

      public org.eclipse.persistence.internal.helper.DatabaseField getField()
      INTERNAL: The aggregate object is held in a single field.
      Overrides:
      getField in class DatabaseMapping
    • hasConverter

      public boolean hasConverter()
      PUBLIC: Indicates if there is a converter on the mapping.
    • isAbstractCompositeObjectMapping

      public boolean isAbstractCompositeObjectMapping()
      INTERNAL:
      Overrides:
      isAbstractCompositeObjectMapping in class DatabaseMapping
    • initialize

      public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
      INTERNAL: Initialize the mapping.
      Overrides:
      initialize in class AggregateMapping
      Throws:
      DescriptorException
    • setAttributeValueInObject

      public void setAttributeValueInObject(Object object, Object value) throws DescriptorException
      INTERNAL: Set the value of the attribute mapped by this mapping.
      Overrides:
      setAttributeValueInObject in class DatabaseMapping
      Throws:
      DescriptorException
    • setConverter

      public void setConverter(Converter converter)
      PUBLIC: Set the converter on the mapping. A converter can be used to convert between the object's value and database value of the attribute.
    • setField

      public void setField(org.eclipse.persistence.internal.helper.DatabaseField field)
      The aggregate object is held in a single field.
    • valueFromObject

      public Object valueFromObject(Object object, org.eclipse.persistence.internal.helper.DatabaseField field, org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
      INTERNAL: Extract and return value of the field from the object
      Overrides:
      valueFromObject in class DatabaseMapping
      Throws:
      DescriptorException
    • valueFromRow

      public Object valueFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, org.eclipse.persistence.internal.sessions.AbstractSession executionSession, boolean isTargetProtected, Boolean[] wasCacheUsed) throws DatabaseException
      INTERNAL: Extract and return the aggregate object from the specified row.
      Overrides:
      valueFromRow in class DatabaseMapping
      Throws:
      DatabaseException
    • buildShallowOriginalFromRow

      public void buildShallowOriginalFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, Object original, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.sessions.AbstractSession executionSession)
      INTERNAL: Builds a shallow original object. Only direct attributes and primary keys are populated. In this way the minimum original required for instantiating a working copy clone can be built without placing it in the shared cache (no concern over cycles).
      Overrides:
      buildShallowOriginalFromRow in class DatabaseMapping
    • buildCompositeObject

      protected abstract Object buildCompositeObject(org.eclipse.persistence.internal.descriptors.ObjectBuilder objectBuilder, org.eclipse.persistence.internal.sessions.AbstractRecord nestedRow, ObjectBuildingQuery query, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManger, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
    • writeFromObjectIntoRow

      public void writeFromObjectIntoRow(Object object, org.eclipse.persistence.internal.sessions.AbstractRecord record, org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseMapping.WriteType writeType) throws DescriptorException
      INTERNAL: Build the value for the database field and put it in the specified database row.
      Overrides:
      writeFromObjectIntoRow in class DatabaseMapping
      Throws:
      DescriptorException
    • buildCompositeRow

      protected abstract Object buildCompositeRow(Object attributeValue, org.eclipse.persistence.internal.sessions.AbstractSession session, org.eclipse.persistence.internal.sessions.AbstractRecord record, DatabaseMapping.WriteType writeType)
    • buildExpression

      public Expression buildExpression(Object queryObject, QueryByExamplePolicy policy, Expression expressionBuilder, Map processedObjects, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: In case Query By Example is used, this method builds and returns an expression that corresponds to a single attribute and it's value.
      Overrides:
      buildExpression in class AggregateMapping
    • writeFromObjectIntoRowForUpdate

      public void writeFromObjectIntoRowForUpdate(WriteObjectQuery query, org.eclipse.persistence.internal.sessions.AbstractRecord row) throws DescriptorException
      INTERNAL: If it has changed, build the value for the database field and put it in the specified database row. If any part of the aggregate object has changed, the entire object is written to the database row (i.e. partial updates are not supported).
      Overrides:
      writeFromObjectIntoRowForUpdate in class DatabaseMapping
      Throws:
      DescriptorException
    • writeFromObjectIntoRowWithChangeRecord

      public void writeFromObjectIntoRowWithChangeRecord(org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseMapping.WriteType writeType) throws DescriptorException
      INTERNAL: Get the attribute value from the object and add the appropriate values to the specified database row.
      Overrides:
      writeFromObjectIntoRowWithChangeRecord in class DatabaseMapping
      Throws:
      DescriptorException
    • writeInsertFieldsIntoRow

      public void writeInsertFieldsIntoRow(org.eclipse.persistence.internal.sessions.AbstractRecord record, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Write fields needed for insert into the template for with null values.
      Overrides:
      writeInsertFieldsIntoRow in class DatabaseMapping