EclipseLink 2.2.0, build 'v20110202-r8913' API Reference

org.eclipse.persistence.mappings
Class AggregateObjectMapping

java.lang.Object
  extended by org.eclipse.persistence.mappings.DatabaseMapping
      extended by org.eclipse.persistence.mappings.AggregateMapping
          extended by org.eclipse.persistence.mappings.AggregateObjectMapping
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, EmbeddableMapping, MapComponentMapping, MapKeyMapping, RelationalMapping

public class AggregateObjectMapping
extends AggregateMapping
implements RelationalMapping, MapKeyMapping, EmbeddableMapping

Purpose:Two objects can be considered to be related by aggregation if there is a strict 1:1 relationship between the objects. This means that the target (child or owned) object cannot exist without the source (parent) object. In TopLink, it also means the data for the owned object is stored in the same table as the parent.

See Also:
Serialized Form
Author:
Sati
Since:
TOPLink/Java 1.0

Nested Class Summary
 
Nested classes/interfaces inherited from class org.eclipse.persistence.mappings.DatabaseMapping
DatabaseMapping.WriteType
 
Field Summary
protected  org.eclipse.persistence.internal.helper.DatabaseTable aggregateKeyTable
           
protected  java.util.Map<java.lang.String,org.eclipse.persistence.internal.helper.DatabaseField> aggregateToSourceFields
          322233 - changed to store the source DatabaseField to hold Case and other colunm info
protected  boolean isNullAllowed
          If all the fields in the database row for the aggregate object are NULL, then, by default, the mapping will place a null in the appropriate source object (as opposed to an aggregate object filled with nulls).
protected  java.util.List<DatabaseMapping> mapsIdMappings
          List of maps id mappings that need to be set to read only at initialize time on their cloned aggregate mappings.
protected  java.util.Map<java.lang.String,org.eclipse.persistence.internal.helper.DatabaseField> nestedFieldTranslations
          Map of nested attributes that need to apply an override name to their a nested aggregate mapping's database field.
protected  java.util.List<ManyToManyMapping> overrideManyToManyMappings
          List of many to many mapping overrides to apply at initialize time to their cloned aggregate mappings.
protected  java.util.List<UnidirectionalOneToManyMapping> overrideUnidirectionalOneToManyMappings
          List of unidirectional one to many mapping overrides to apply at initialize time to their cloned aggregate mappings.
 
Fields inherited from class org.eclipse.persistence.mappings.AggregateMapping
referenceClass, referenceClassName, referenceDescriptor
 
Fields inherited from class org.eclipse.persistence.mappings.DatabaseMapping
attributeAccessor, attributeName, derivedIdMapping, derivesId, descriptor, fields, isCacheable, isJPAId, isLazy, isMapKeyMapping, isOptional, isPrimaryKeyMapping, isReadOnly, isRemotelyInitialized, mapsIdValue, NO_FIELDS, NO_WEIGHT, properties, weight, WEIGHT_AGGREGATE, WEIGHT_DIRECT, WEIGHT_TO_ONE, WEIGHT_TRANSFORM
 
Constructor Summary
AggregateObjectMapping()
          Default constructor.
 
Method Summary
 void addAdditionalFieldsToQuery(ReadQuery selectionQuery, Expression baseExpression)
          INTERNAL: Used when initializing queries for mappings that use a Map Called when the selection query is being initialized to add the fields for the map key to the query
 void addFieldNameTranslation(java.lang.String sourceFieldName, java.lang.String aggregateFieldName)
          PUBLIC: Add a field name translation that maps from a field name in the source table to a field name in the aggregate descriptor.
 void addFieldsForMapKey(org.eclipse.persistence.internal.sessions.AbstractRecord joinRow)
          INTERNAL: Used when initializing queries for mappings that use a Map Called when the insert query is being initialized to ensure the fields for the map key are in the insert query
 void addFieldTranslation(org.eclipse.persistence.internal.helper.DatabaseField sourceField, java.lang.String aggregateFieldName)
          PUBLIC: Add a field translation that maps from a field in the source table to a field name in the aggregate descriptor.
 void addKeyToDeletedObjectsList(java.lang.Object object, java.util.Map deletedObjects)
          INTERNAL: For mappings used as MapKeys in MappedKeyContainerPolicy.
 void addMapsIdMapping(DatabaseMapping mapping)
          INTERNAL: In JPA users may specify a maps id mapping on a shared embeddable descriptor.
 void addNestedFieldTranslation(java.lang.String attributeName, org.eclipse.persistence.internal.helper.DatabaseField sourceField, java.lang.String aggregateFieldName)
          INTERNAL: Add a nested field translation that maps from a field in the source table to a field name in a nested aggregate descriptor.
 void addOverrideManyToManyMapping(ManyToManyMapping mapping)
          INTERNAL: In JPA users may specify overrides to apply to a many to many mapping on a shared embeddable descriptor.
 void addOverrideUnidirectionalOneToManyMapping(UnidirectionalOneToManyMapping mapping)
          INTERNAL: In JPA users may specify overrides to apply to a unidirectional one to many mapping on a shared embeddable descriptor.
 void addPrimaryKeyJoinField(org.eclipse.persistence.internal.helper.DatabaseField primaryKeyField, org.eclipse.persistence.internal.helper.DatabaseField secondaryField)
          INTERNAL: Add a primary key join column (secondary field).
protected  boolean allAggregateFieldsAreNull(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow)
          INTERNAL: Return whether all the aggregate fields in the specified row are NULL.
 void allowNull()
          PUBLIC: If all the fields in the database row for the aggregate object are NULL, then, by default, the mapping will place a null in the appropriate source object (as opposed to an aggregate object filled with nulls).
protected  boolean backupAttributeValueIsNull(WriteObjectQuery query)
          INTERNAL: Return whether the query's backup object has an attribute value of null.
 java.lang.Object buildAggregateFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow, java.lang.Object targetObject, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, boolean buildShallowOriginal, org.eclipse.persistence.internal.sessions.AbstractSession executionSession, boolean targetIsProtected)
          INTERNAL: Build and return an aggregate object from the specified row.
 void buildClone(java.lang.Object original, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, java.lang.Object clone, org.eclipse.persistence.internal.sessions.AbstractSession cloningSession)
          INTERNAL: Clone the attribute from the original and assign it to the clone.
 void buildCloneFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, java.lang.Object clone, org.eclipse.persistence.internal.identitymaps.CacheKey sharedCacheKey, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork, org.eclipse.persistence.internal.sessions.AbstractSession executionSession)
          INTERNAL: A combination of readFromRowIntoObject and buildClone.
 java.lang.Object buildElementClone(java.lang.Object attributeValue, java.lang.Object parent, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, org.eclipse.persistence.internal.sessions.AbstractSession cloningSession, boolean isExisting)
          INTERNAL: Build a clone of the given element in a unitOfWork
 Expression buildObjectJoinExpression(Expression expression, Expression argument, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Used to allow object level comparisons.
 Expression buildObjectJoinExpression(Expression expression, java.lang.Object value, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Used to allow object level comparisons.
 ReadQuery buildSelectionQueryForDirectCollectionKeyMapping(org.eclipse.persistence.internal.queries.ContainerPolicy containerPolicy)
          INTERNAL: Certain key mappings favor different types of selection query.
 void buildShallowOriginalFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow, java.lang.Object original, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.sessions.AbstractSession executionSession)
          INTERNAL: Builds a shallow original object.
protected  org.eclipse.persistence.internal.sessions.AbstractRecord buildTemplateInsertRow(org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Build and return a "template" database row with all the fields set to null.
 void cascadeDiscoverAndPersistUnregisteredNewObjects(java.lang.Object object, java.util.Map newObjects, java.util.Map unregisteredExistingObjects, java.util.Map visitedObjects, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, boolean getAttributeValueFromObject)
          INTERNAL: Cascade discover and persist new objects during commit to the map key
 void cascadePerformRemoveIfRequired(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.util.Map visitedObjects)
          INTERNAL: Cascade perform delete through mappings that require the cascade
 void cascadePerformRemoveIfRequired(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.util.Map visitedObjects, boolean getAttributeValueFromObject)
          INTERNAL: Cascade perform delete through mappings that require the cascade
 void cascadePerformRemovePrivateOwnedObjectFromChangeSetIfRequired(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.util.Map visitedObjects)
          INTERNAL: Cascade perform removal of orphaned private owned objects from the UnitOfWorkChangeSet
 void cascadeRegisterNewIfRequired(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.util.Map visitedObjects)
          INTERNAL: Cascade registerNew for Create through mappings that require the cascade
 void cascadeRegisterNewIfRequired(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.util.Map visitedObjects, boolean getAttributeValueFromObject)
          INTERNAL: Cascade registerNew for Create through mappings that require the cascade
 java.lang.Object clone()
          INTERNAL: Clone the aggregate to source field names.
protected  java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> collectFields()
          INTERNAL: Return the fields handled by the mapping.
 void collectQueryParameters(java.util.Set<org.eclipse.persistence.internal.helper.DatabaseField> record)
          INTERNAL: This method is used to store the FK fields that can be cached that correspond to noncacheable mappings the FK field values will be used to re-issue the query when cloning the shared cache entity
 java.lang.Object createMapComponentFromJoinedRow(org.eclipse.persistence.internal.sessions.AbstractRecord dbRow, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManger, ObjectBuildingQuery query, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, org.eclipse.persistence.internal.sessions.AbstractSession session, boolean isTargetProtected)
          INTERNAL Called when a DatabaseMapping is used to map the key in a collection and a join query is executed.
 java.lang.Object createMapComponentFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord dbRow, ObjectBuildingQuery query, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, org.eclipse.persistence.internal.sessions.AbstractSession session, boolean isTargetProtected)
          INTERNAL Called when a DatabaseMapping is used to map the key in a collection.
 java.lang.Object createMapComponentFromSerializableKeyInfo(java.lang.Object keyInfo, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Create an instance of the Key object from the key information extracted from the map.
 QueryKey createQueryKeyForMapKey()
          INTERNAL: Create a query key that links to the map key
 java.lang.Object createSerializableMapKeyInfo(java.lang.Object key, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Creates the Array of simple types used to recreate this map.
 void deleteMapKey(java.lang.Object objectDeleted, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: For mappings used as MapKeys in MappedKeyContainerPolicy, Delete the passed object if necessary.
 void dontAllowNull()
          PUBLIC: If all the fields in the database row for the aggregate object are NULL, then, by default, the mapping will place a null in the appropriate source object (as opposed to an aggregate object filled with nulls).
 java.util.Map extractIdentityFieldsForQuery(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Extract the fields for the Map key from the object to use in a query.
 Expression getAdditionalSelectionCriteriaForMapKey()
          INTERNAL: Return the selection criteria necessary to select the target object when this mapping is a map key.
 java.util.List<org.eclipse.persistence.internal.helper.DatabaseTable> getAdditionalTablesForJoinQuery()
          INTERNAL: Return any tables that will be required when this mapping is used as part of a join query
 java.util.Vector<Association> getAggregateToSourceFieldAssociations()
          INTERNAL: Return a collection of the aggregate to source field associations.
 java.util.Map<java.lang.String,org.eclipse.persistence.internal.helper.DatabaseField> getAggregateToSourceFields()
          INTERNAL: Return the hashtable that stores aggregate field name to source fields.
 java.util.List<org.eclipse.persistence.internal.helper.DatabaseField> getAllFieldsForMapKey()
          INTERNAL: Get all the fields for the map key
 java.lang.Class getAttributeClassification()
          PUBLIC: The classification type for the attribute this mapping represents
 java.lang.Class getFieldClassification(org.eclipse.persistence.internal.helper.DatabaseField fieldToClassify)
          INTERNAL: Return the classification for the field contained in the mapping.
 java.util.Map<org.eclipse.persistence.internal.helper.DatabaseField,org.eclipse.persistence.internal.helper.DatabaseField> getForeignKeyFieldsForMapKey()
          INTERNAL: Return a Map of any foreign keys defined within the the MapKey
 java.util.List<org.eclipse.persistence.internal.helper.DatabaseField> getIdentityFieldsForMapKey()
          INTERNAL: Return the fields that make up the identity of the mapped object.
 java.lang.Object getMapKeyTargetType()
          INTERNAL: Return the class this key mapping maps or the descriptor for it
protected  java.lang.Object getMatchingAttributeValueFromObject(org.eclipse.persistence.internal.sessions.AbstractRecord row, java.lang.Object targetObject, org.eclipse.persistence.internal.sessions.AbstractSession session, ClassDescriptor descriptor)
          INTERNAL: This is used to preserve object identity during a refreshObject() query.
protected  java.lang.Object getMatchingBackupAttributeValue(WriteObjectQuery query, java.lang.Object attributeValue)
          INTERNAL: This is used to match up objects during an update in a UOW.
 ObjectLevelReadQuery getNestedJoinQuery(org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectLevelReadQuery query, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Return the query that is used when this mapping is part of a joined relationship This method is used when this mapping is used to map the key in a Map
 ClassDescriptor getReferenceDescriptor(java.lang.Class theClass, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Since aggregate object mappings clone their descriptors, for inheritance the correct child clone must be found.
protected  java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> getReferenceFields()
          INTERNAL: Return the fields used to build the aggregate object.
 java.lang.Object getTargetVersionOfSourceObject(java.lang.Object object, java.lang.Object parent, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
          INTERNAL: If required, get the targetVersion of the source object from the merge manager.
 boolean hasDependency()
          INTERNAL: Return if the mapping has any ownership or other dependency over its target object(s).
 void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: For an aggregate mapping the reference descriptor is cloned.
 void initializeChildInheritance(ClassDescriptor parentDescriptor, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: For an aggregate mapping the reference descriptor is cloned.
 void initializeParentInheritance(ClassDescriptor parentDescriptor, ClassDescriptor childDescriptor, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: For an aggregate mapping the reference descriptor is cloned.
protected  void initializeReferenceDescriptor(ClassDescriptor clonedDescriptor)
          INTERNAL: Initialize the cloned reference descriptor with table names and primary keys
 boolean isAggregateObjectMapping()
          INTERNAL: Related mapping should implement this method to return true.
 boolean isCascadedLockingSupported()
          INTERNAL Return true if this mapping supports cascaded version optimistic locking.
 boolean isChangeTrackingSupported(Project project)
          INTERNAL: Return if this mapping supports change tracking.
 boolean isLockableMapping()
          INTERNAL: Return whether this mapping should be traversed when we are locking
 boolean isNullAllowed()
          PUBLIC: Return if all the fields in the database row for the aggregate object are NULL, then, by default, the mapping will place a null in the appropriate source object (as opposed to an aggregate object filled with nulls).
 boolean isRelationalMapping()
          INTERNAL:
 void iterateOnMapKey(org.eclipse.persistence.internal.descriptors.DescriptorIterator iterator, java.lang.Object element)
          INTERNAL: Called when iterating through descriptors to handle iteration on this mapping when it is used as a MapKey
 void postInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: For an aggregate mapping the reference descriptor is cloned.
 void postInitializeMapKey(org.eclipse.persistence.internal.queries.MappedKeyMapContainerPolicy policy)
          INTERNAL: Making any mapping changes necessary to use a the mapping as a map key after initializing the mapping.
 void preinitializeMapKey(org.eclipse.persistence.internal.helper.DatabaseTable table)
          INTERNAL: Making any mapping changes necessary to use a the mapping as a map key prior to initializing the mapping
 java.lang.Object readFromReturnRowIntoObject(org.eclipse.persistence.internal.sessions.AbstractRecord row, java.lang.Object targetObject, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, ReadObjectQuery query, java.util.Collection handledMappings)
          INTERNAL: Build an aggregate object from the specified return row and put it in the specified target object.
 java.lang.Object readFromRowIntoObject(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, java.lang.Object targetObject, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.sessions.AbstractSession executionSession, boolean isTargetProtected)
          INTERNAL: Build an aggregate object from the specified row and put it in the specified target object.
 void rehashFieldDependancies(org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Rehash any hashtables based on fields.
 boolean requiresDataModificationEventsForMapKey()
          INTERNAL: Return whether this mapping requires extra queries to update the rows if it is used as a key in a map.
 void setAggregateToSourceFieldAssociations(java.util.Vector<Association> fieldAssociations)
          INTERNAL: Set a collection of the aggregate to source field name associations.
 void setAggregateToSourceFields(java.util.Map<java.lang.String,org.eclipse.persistence.internal.helper.DatabaseField> aggregateToSource)
          INTERNAL: Set the hashtable that stores target field name to the source field name.
 void setChangeListener(java.lang.Object clone, java.beans.PropertyChangeListener listener, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
          INTERNAL: Set the change listener in the aggregate.
 void setIsNullAllowed(boolean isNullAllowed)
          PUBLIC: Configure if all the fields in the database row for the aggregate object are NULL, then, by default, the mapping will place a null in the appropriate source object (as opposed to an aggregate object filled with nulls).
 void setTableForAggregateMappingKey(org.eclipse.persistence.internal.helper.DatabaseTable table)
          INTERNAL: If this mapping is used as the key of a CollectionTableMapMapping, the table used by this mapping will be the relation table.
protected  void translateField(org.eclipse.persistence.internal.helper.DatabaseField sourceField, org.eclipse.persistence.internal.helper.DatabaseField mappingField, ClassDescriptor clonedDescriptor)
          INTERNAL: Apply the field translation from the sourceField to the mappingField.
protected  void translateFields(ClassDescriptor clonedDescriptor, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: If field names are different in the source and aggregate objects then the translation is done here.
 java.lang.Object unwrapKey(java.lang.Object key, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Allow the key mapping to unwrap the object
 java.lang.Object valueFromObject(java.lang.Object object, org.eclipse.persistence.internal.helper.DatabaseField field, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Extract value of the field from the object
 java.lang.Object wrapKey(java.lang.Object key, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Allow the key mapping to wrap the object
 void writeFromAttributeIntoRow(java.lang.Object attribute, org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: A subclass should implement this method if it wants different behavior.
 void writeFromObjectIntoRow(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow, org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseMapping.WriteType writeType)
          INTERNAL: Get the attribute value from the object and add the appropriate values to the specified database row.
 void writeFromObjectIntoRowForUpdate(WriteObjectQuery query, org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow)
          INTERNAL: Get the attribute value from the object and add the changed values to the specified database row.
 void writeFromObjectIntoRowWithChangeRecord(org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow, org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseMapping.WriteType writeType)
          INTERNAL: Get the attribute value from the object and add the appropriate values to the specified database row.
 void writeInsertFieldsIntoRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Write fields needed for insert into the template for with null values.
protected  void writeNullReferenceRow(org.eclipse.persistence.internal.sessions.AbstractRecord record)
          INTERNAL: Write null values for all aggregate fields into the parent row.
protected  void writeToRowFromAggregate(org.eclipse.persistence.internal.sessions.AbstractRecord record, java.lang.Object object, java.lang.Object attributeValue, org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseMapping.WriteType writeType)
          INTERNAL: Write the aggregate values into the parent row.
protected  void writeToRowFromAggregateForUpdate(org.eclipse.persistence.internal.sessions.AbstractRecord record, WriteObjectQuery query, java.lang.Object attributeValue)
          INTERNAL: Build and return a database row built with the changed values from the specified attribute value.
protected  void writeToRowFromAggregateWithChangeRecord(org.eclipse.persistence.internal.sessions.AbstractRecord record, org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.ObjectChangeSet objectChangeSet, org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseMapping.WriteType writeType)
          INTERNAL: Build and return a database row built with the values from the specified attribute value.
 
Methods inherited from class org.eclipse.persistence.mappings.AggregateMapping
buildAggregateDeleteQuery, buildAggregateModifyQuery, buildAggregateWriteQuery, buildBackupClone, buildBackupClonePart, buildClonePart, buildClonePart, buildCopy, buildCopyOfAttributeValue, buildExpression, buildNewMergeInstanceOf, compareAttributeValues, compareForChange, compareObjects, convertClassNamesToClasses, executeEvent, fixAttributeValue, fixObjectReferences, getAttributeValueFromBackupClone, getObjectBuilder, getObjectBuilderForClass, getQueryManager, getReferenceClass, getReferenceClassName, getReferenceDescriptor, getReferenceDescriptor, isAggregateMapping, iterate, iterateOnAttributeValue, mergeAttributeValue, mergeChangesIntoObject, mergeIntoObject, postDelete, postDeleteAttributeValue, postInsert, postInsertAttributeValue, postUpdate, postUpdateAttributeValue, preDelete, preDeleteAttributeValue, preInsert, preInsertAttributeValue, preUpdate, preUpdateAttributeValue, remoteInitialization, setReferenceClass, setReferenceClassName, setReferenceDescriptor, updateChangeRecord, verifyDelete, verifyDeleteOfAttributeValue
 
Methods inherited from class org.eclipse.persistence.mappings.DatabaseMapping
buildBackupCloneForPartObject, buildChangeRecord, buildCloneForPartObject, buildContainerClone, calculateDeferredChanges, cascadeDiscoverAndPersistUnregisteredNewObjects, cascadeMerge_, cloneFields, createCloneValueHolder, derivesId, earlyPreDelete, extractNestedExpressions, fixRealObjectReferences, getAttributeAccessor, getAttributeName, getAttributeValueFromObject, getContainerPolicy, getDerivedIdMapping, getDescriptor, getField, getFields, getGetMethodName, getMapsIdValue, getObjectCorrespondingTo, getProperties, getProperty, getRealAttributeValueFromAttribute, getRealAttributeValueFromObject, getRealCollectionAttributeValueFromObject, getRelationshipPartner, getSelectFields, getSelectTables, getSetMethodName, getValueFromRemoteValueHolder, getWeight, hasConstraintDependency, hasInverseConstraintDependency, hasMapsIdValue, hasRootExpressionThatShouldUseOuterJoin, instantiateAttribute, isAbstractCompositeCollectionMapping, isAbstractCompositeDirectCollectionMapping, isAbstractCompositeObjectMapping, isAbstractDirectMapping, isAggregateCollectionMapping, isCacheable, isCandidateForPrivateOwnedRemoval, isCloningRequired, isCollectionMapping, isDatabaseMapping, isDirectCollectionMapping, isDirectMapMapping, isDirectToFieldMapping, isDirectToXMLTypeMapping, isEISMapping, isForeignReferenceMapping, isJoiningSupported, isJPAId, isLazy, isManyToManyMapping, isManyToOneMapping, isMapKeyMapping, isNestedTableMapping, isObjectReferenceMapping, isOneToManyMapping, isOneToOneMapping, isOptional, isOwned, isPrimaryKeyMapping, isPrivateOwned, isReadOnly, isReferenceMapping, isRemotelyInitialized, isStructureMapping, isTransformationMapping, isUnidirectionalOneToManyMapping, isUsingMethodAccess, isVariableOneToOneMapping, isWriteOnly, isXMLMapping, iterateOnRealAttributeValue, performDataModificationEvent, postCalculateChanges, postCalculateChangesOnDeleted, preInitialize, prepareCascadeLockingPolicy, readFromResultSetIntoObject, readOnly, readWrite, recordPrivateOwnedRemovals, remotelyInitialized, replaceValueHoldersIn, setAttributeAccessor, setAttributeName, setAttributeValueInObject, setDerivedIdMapping, setDerivesId, setDescriptor, setFields, setGetMethodName, setIsCacheable, setIsJPAId, setIsLazy, setIsMapKeyMapping, setIsOptional, setIsPrimaryKeyMapping, setIsReadOnly, setMapsIdValue, setProperties, setProperty, setRealAttributeValueInObject, setSetMethodName, setWeight, simpleAddToCollectionChangeRecord, simpleRemoveFromCollectionChangeRecord, toString, updateCollectionChangeRecord, validateAfterInitialization, validateBeforeInitialization, valueFromResultSet, valueFromRow, valueFromRow, writeFromObjectIntoRowForShallowInsert, writeFromObjectIntoRowForShallowInsertWithChangeRecord, writeFromObjectIntoRowForWhereClause, writeUpdateFieldsIntoRow
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.eclipse.persistence.mappings.foundation.MapKeyMapping
getReferenceDescriptor
 
Methods inherited from interface org.eclipse.persistence.mappings.EmbeddableMapping
getAttributeName
 

Field Detail

isNullAllowed

protected boolean isNullAllowed
If all the fields in the database row for the aggregate object are NULL, then, by default, the mapping will place a null in the appropriate source object (as opposed to an aggregate object filled with nulls). To change this behavior, set the value of this variable to false. Then the mapping will build a new instance of the aggregate object that is filled with nulls and place it in the source object.


aggregateKeyTable

protected org.eclipse.persistence.internal.helper.DatabaseTable aggregateKeyTable

aggregateToSourceFields

protected transient java.util.Map<java.lang.String,org.eclipse.persistence.internal.helper.DatabaseField> aggregateToSourceFields
322233 - changed to store the source DatabaseField to hold Case and other colunm info


nestedFieldTranslations

protected transient java.util.Map<java.lang.String,org.eclipse.persistence.internal.helper.DatabaseField> nestedFieldTranslations
Map of nested attributes that need to apply an override name to their a nested aggregate mapping's database field. Aggregate to source fields map is the existing EclipseLink functionality and works well when all embeddable mappings have unique database fields. This map adds specific attribute to database field override.

See Also:
addFieldTranslation()

overrideManyToManyMappings

protected transient java.util.List<ManyToManyMapping> overrideManyToManyMappings
List of many to many mapping overrides to apply at initialize time to their cloned aggregate mappings.


overrideUnidirectionalOneToManyMappings

protected transient java.util.List<UnidirectionalOneToManyMapping> overrideUnidirectionalOneToManyMappings
List of unidirectional one to many mapping overrides to apply at initialize time to their cloned aggregate mappings.


mapsIdMappings

protected transient java.util.List<DatabaseMapping> mapsIdMappings
List of maps id mappings that need to be set to read only at initialize time on their cloned aggregate mappings.

Constructor Detail

AggregateObjectMapping

public AggregateObjectMapping()
Default constructor.

Method Detail

isRelationalMapping

public boolean isRelationalMapping()
INTERNAL:

Overrides:
isRelationalMapping in class DatabaseMapping

addAdditionalFieldsToQuery

public void addAdditionalFieldsToQuery(ReadQuery selectionQuery,
                                       Expression baseExpression)
INTERNAL: Used when initializing queries for mappings that use a Map Called when the selection query is being initialized to add the fields for the map key to the query

Specified by:
addAdditionalFieldsToQuery in interface MapKeyMapping

addFieldsForMapKey

public void addFieldsForMapKey(org.eclipse.persistence.internal.sessions.AbstractRecord joinRow)
INTERNAL: Used when initializing queries for mappings that use a Map Called when the insert query is being initialized to ensure the fields for the map key are in the insert query

Specified by:
addFieldsForMapKey in interface MapKeyMapping

addFieldNameTranslation

public void addFieldNameTranslation(java.lang.String sourceFieldName,
                                    java.lang.String aggregateFieldName)
PUBLIC: Add a field name translation that maps from a field name in the source table to a field name in the aggregate descriptor.


addFieldTranslation

public void addFieldTranslation(org.eclipse.persistence.internal.helper.DatabaseField sourceField,
                                java.lang.String aggregateFieldName)
PUBLIC: Add a field translation that maps from a field in the source table to a field name in the aggregate descriptor.

Specified by:
addFieldTranslation in interface EmbeddableMapping

addMapsIdMapping

public void addMapsIdMapping(DatabaseMapping mapping)
INTERNAL: In JPA users may specify a maps id mapping on a shared embeddable descriptor. These mappings need to be set to read-only at initialize time, after the reference descriptor is cloned.


addNestedFieldTranslation

public void addNestedFieldTranslation(java.lang.String attributeName,
                                      org.eclipse.persistence.internal.helper.DatabaseField sourceField,
                                      java.lang.String aggregateFieldName)
INTERNAL: Add a nested field translation that maps from a field in the source table to a field name in a nested aggregate descriptor. These are handled slightly different that regular field translations in that they are unique based on the attribute name. It solves the case where multiple nested embeddables have mappings to similarly named default columns.

Specified by:
addNestedFieldTranslation in interface EmbeddableMapping

addOverrideManyToManyMapping

public void addOverrideManyToManyMapping(ManyToManyMapping mapping)
INTERNAL: In JPA users may specify overrides to apply to a many to many mapping on a shared embeddable descriptor. These settings are applied at initialize time, after the reference descriptor is cloned.

Specified by:
addOverrideManyToManyMapping in interface EmbeddableMapping

addOverrideUnidirectionalOneToManyMapping

public void addOverrideUnidirectionalOneToManyMapping(UnidirectionalOneToManyMapping mapping)
INTERNAL: In JPA users may specify overrides to apply to a unidirectional one to many mapping on a shared embeddable descriptor. These settings are applied at initialize time, after the reference descriptor is cloned.

Specified by:
addOverrideUnidirectionalOneToManyMapping in interface EmbeddableMapping

addKeyToDeletedObjectsList

public void addKeyToDeletedObjectsList(java.lang.Object object,
                                       java.util.Map deletedObjects)
INTERNAL: For mappings used as MapKeys in MappedKeyContainerPolicy. Add the target of this mapping to the deleted objects list if necessary This method is used for removal of private owned relationships. AggregateObjectMappings are dealt with in their parent delete, so this is a no-op.

Specified by:
addKeyToDeletedObjectsList in interface MapKeyMapping
Parameters:
object -
manager -

allAggregateFieldsAreNull

protected boolean allAggregateFieldsAreNull(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow)
INTERNAL: Return whether all the aggregate fields in the specified row are NULL.


allowNull

public void allowNull()
PUBLIC: If all the fields in the database row for the aggregate object are NULL, then, by default, the mapping will place a null in the appropriate source object (as opposed to an aggregate object filled with nulls). This behavior can be explicitly set by calling #allowNull(). To change this behavior, call #dontAllowNull(). Then the mapping will build a new instance of the aggregate object that is filled with nulls and place it in the source object. In either situation, when writing, the mapping will place a NULL in all the fields in the database row for the aggregate object. Note: Any aggregate that has a relationship mapping automatically does not allow null.


backupAttributeValueIsNull

protected boolean backupAttributeValueIsNull(WriteObjectQuery query)
INTERNAL: Return whether the query's backup object has an attribute value of null.


buildAggregateFromRow

public java.lang.Object buildAggregateFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow,
                                              java.lang.Object targetObject,
                                              org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey,
                                              org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager,
                                              ObjectBuildingQuery sourceQuery,
                                              boolean buildShallowOriginal,
                                              org.eclipse.persistence.internal.sessions.AbstractSession executionSession,
                                              boolean targetIsProtected)
                                       throws DatabaseException
INTERNAL: Build and return an aggregate object from the specified row. If a null value is allowed and all the appropriate fields in the row are NULL, return a null. If an aggregate is referenced by the target object, return it (maintain identity) Otherwise, simply create a new aggregate object and return it.

Throws:
DatabaseException

writeNullReferenceRow

protected void writeNullReferenceRow(org.eclipse.persistence.internal.sessions.AbstractRecord record)
INTERNAL: Write null values for all aggregate fields into the parent row.


buildObjectJoinExpression

public Expression buildObjectJoinExpression(Expression expression,
                                            java.lang.Object value,
                                            org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Used to allow object level comparisons. In the case of an Aggregate which has no primary key must do an attribute by attribute comparison.

Overrides:
buildObjectJoinExpression in class DatabaseMapping

buildObjectJoinExpression

public Expression buildObjectJoinExpression(Expression expression,
                                            Expression argument,
                                            org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Used to allow object level comparisons.

Overrides:
buildObjectJoinExpression in class DatabaseMapping

writeToRowFromAggregate

protected void writeToRowFromAggregate(org.eclipse.persistence.internal.sessions.AbstractRecord record,
                                       java.lang.Object object,
                                       java.lang.Object attributeValue,
                                       org.eclipse.persistence.internal.sessions.AbstractSession session,
                                       DatabaseMapping.WriteType writeType)
                                throws DescriptorException
INTERNAL: Write the aggregate values into the parent row.

Throws:
DescriptorException

writeToRowFromAggregateWithChangeRecord

protected void writeToRowFromAggregateWithChangeRecord(org.eclipse.persistence.internal.sessions.AbstractRecord record,
                                                       org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord,
                                                       org.eclipse.persistence.internal.sessions.ObjectChangeSet objectChangeSet,
                                                       org.eclipse.persistence.internal.sessions.AbstractSession session,
                                                       DatabaseMapping.WriteType writeType)
                                                throws DescriptorException
INTERNAL: Build and return a database row built with the values from the specified attribute value.

Throws:
DescriptorException

writeToRowFromAggregateForUpdate

protected void writeToRowFromAggregateForUpdate(org.eclipse.persistence.internal.sessions.AbstractRecord record,
                                                WriteObjectQuery query,
                                                java.lang.Object attributeValue)
                                         throws DescriptorException
INTERNAL: Build and return a database row built with the changed values from the specified attribute value.

Throws:
DescriptorException

buildClone

public void buildClone(java.lang.Object original,
                       org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey,
                       java.lang.Object clone,
                       org.eclipse.persistence.internal.sessions.AbstractSession cloningSession)
INTERNAL: Clone the attribute from the original and assign it to the clone.

Overrides:
buildClone in class AggregateMapping

buildElementClone

public java.lang.Object buildElementClone(java.lang.Object attributeValue,
                                          java.lang.Object parent,
                                          org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey,
                                          org.eclipse.persistence.internal.sessions.AbstractSession cloningSession,
                                          boolean isExisting)
INTERNAL: Build a clone of the given element in a unitOfWork

Specified by:
buildElementClone in interface MapKeyMapping
Parameters:
element -
cloningSession -
isExisting -
Returns:

setChangeListener

public void setChangeListener(java.lang.Object clone,
                              java.beans.PropertyChangeListener listener,
                              org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Set the change listener in the aggregate.

Overrides:
setChangeListener in class DatabaseMapping

buildCloneFromRow

public void buildCloneFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow,
                              org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager,
                              java.lang.Object clone,
                              org.eclipse.persistence.internal.identitymaps.CacheKey sharedCacheKey,
                              ObjectBuildingQuery sourceQuery,
                              org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork,
                              org.eclipse.persistence.internal.sessions.AbstractSession executionSession)
INTERNAL: A combination of readFromRowIntoObject and buildClone.

buildClone assumes the attribute value exists on the original and can simply be copied.

readFromRowIntoObject assumes that one is building an original.

Both of the above assumptions are false in this method, and actually attempts to do both at the same time.

Extract value from the row and set the attribute to this value in the working copy clone. In order to bypass the shared cache when in transaction a UnitOfWork must be able to populate working copies directly from the row.

Overrides:
buildCloneFromRow in class AggregateMapping

buildShallowOriginalFromRow

public void buildShallowOriginalFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow,
                                        java.lang.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

buildSelectionQueryForDirectCollectionKeyMapping

public ReadQuery buildSelectionQueryForDirectCollectionKeyMapping(org.eclipse.persistence.internal.queries.ContainerPolicy containerPolicy)
INTERNAL: Certain key mappings favor different types of selection query. Return the appropriate type of selectionQuery

Specified by:
buildSelectionQueryForDirectCollectionKeyMapping in interface MapKeyMapping
Returns:

buildTemplateInsertRow

protected org.eclipse.persistence.internal.sessions.AbstractRecord buildTemplateInsertRow(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Build and return a "template" database row with all the fields set to null.


cascadeDiscoverAndPersistUnregisteredNewObjects

public void cascadeDiscoverAndPersistUnregisteredNewObjects(java.lang.Object object,
                                                            java.util.Map newObjects,
                                                            java.util.Map unregisteredExistingObjects,
                                                            java.util.Map visitedObjects,
                                                            org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow,
                                                            boolean getAttributeValueFromObject)
INTERNAL: Cascade discover and persist new objects during commit to the map key

Specified by:
cascadeDiscoverAndPersistUnregisteredNewObjects in interface MapKeyMapping

cascadePerformRemoveIfRequired

public void cascadePerformRemoveIfRequired(java.lang.Object object,
                                           org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow,
                                           java.util.Map visitedObjects,
                                           boolean getAttributeValueFromObject)
INTERNAL: Cascade perform delete through mappings that require the cascade

Specified by:
cascadePerformRemoveIfRequired in interface MapKeyMapping

cascadePerformRemoveIfRequired

public void cascadePerformRemoveIfRequired(java.lang.Object object,
                                           org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow,
                                           java.util.Map visitedObjects)
INTERNAL: Cascade perform delete through mappings that require the cascade

Specified by:
cascadePerformRemoveIfRequired in class DatabaseMapping

cascadePerformRemovePrivateOwnedObjectFromChangeSetIfRequired

public void cascadePerformRemovePrivateOwnedObjectFromChangeSetIfRequired(java.lang.Object object,
                                                                          org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow,
                                                                          java.util.Map visitedObjects)
INTERNAL: Cascade perform removal of orphaned private owned objects from the UnitOfWorkChangeSet

Overrides:
cascadePerformRemovePrivateOwnedObjectFromChangeSetIfRequired in class DatabaseMapping

cascadeRegisterNewIfRequired

public void cascadeRegisterNewIfRequired(java.lang.Object object,
                                         org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow,
                                         java.util.Map visitedObjects,
                                         boolean getAttributeValueFromObject)
INTERNAL: Cascade registerNew for Create through mappings that require the cascade

Specified by:
cascadeRegisterNewIfRequired in interface MapKeyMapping

cascadeRegisterNewIfRequired

public void cascadeRegisterNewIfRequired(java.lang.Object object,
                                         org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow,
                                         java.util.Map visitedObjects)
INTERNAL: Cascade registerNew for Create through mappings that require the cascade

Specified by:
cascadeRegisterNewIfRequired in class DatabaseMapping

clone

public java.lang.Object clone()
INTERNAL: Clone the aggregate to source field names. AggregateCollectionMapping needs each nested embedded mapping to have its own list of aggregate to source field names so that it can apply nested override names to shared aggregate object mappings.

Overrides:
clone in class DatabaseMapping

collectFields

protected java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> collectFields()
INTERNAL: Return the fields handled by the mapping.

Overrides:
collectFields in class DatabaseMapping

collectQueryParameters

public void collectQueryParameters(java.util.Set<org.eclipse.persistence.internal.helper.DatabaseField> record)
INTERNAL: This method is used to store the FK fields that can be cached that correspond to noncacheable mappings the FK field values will be used to re-issue the query when cloning the shared cache entity

Overrides:
collectQueryParameters in class DatabaseMapping

createMapComponentFromRow

public java.lang.Object createMapComponentFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord dbRow,
                                                  ObjectBuildingQuery query,
                                                  org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey,
                                                  org.eclipse.persistence.internal.sessions.AbstractSession session,
                                                  boolean isTargetProtected)
INTERNAL Called when a DatabaseMapping is used to map the key in a collection. Returns the key.

Specified by:
createMapComponentFromRow in interface MapComponentMapping

createSerializableMapKeyInfo

public java.lang.Object createSerializableMapKeyInfo(java.lang.Object key,
                                                     org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Creates the Array of simple types used to recreate this map.

Specified by:
createSerializableMapKeyInfo in interface MapKeyMapping

createMapComponentFromSerializableKeyInfo

public java.lang.Object createMapComponentFromSerializableKeyInfo(java.lang.Object keyInfo,
                                                                  org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Create an instance of the Key object from the key information extracted from the map. This may return the value directly in case of a simple key or will be used as the FK to load a related entity.

Specified by:
createMapComponentFromSerializableKeyInfo in interface MapKeyMapping

createMapComponentFromJoinedRow

public java.lang.Object createMapComponentFromJoinedRow(org.eclipse.persistence.internal.sessions.AbstractRecord dbRow,
                                                        org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManger,
                                                        ObjectBuildingQuery query,
                                                        org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey,
                                                        org.eclipse.persistence.internal.sessions.AbstractSession session,
                                                        boolean isTargetProtected)
INTERNAL Called when a DatabaseMapping is used to map the key in a collection and a join query is executed. Returns the key.

Specified by:
createMapComponentFromJoinedRow in interface MapKeyMapping

createQueryKeyForMapKey

public QueryKey createQueryKeyForMapKey()
INTERNAL: Create a query key that links to the map key

Specified by:
createQueryKeyForMapKey in interface MapKeyMapping
Returns:

deleteMapKey

public void deleteMapKey(java.lang.Object objectDeleted,
                         org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: For mappings used as MapKeys in MappedKeyContainerPolicy, Delete the passed object if necessary. This method is used for removal of private owned relationships. AggregateObjectMappings are dealt with in their parent delete, so this is a no-op.

Specified by:
deleteMapKey in interface MapKeyMapping
Parameters:
objectDeleted -
session -

dontAllowNull

public void dontAllowNull()
PUBLIC: If all the fields in the database row for the aggregate object are NULL, then, by default, the mapping will place a null in the appropriate source object (as opposed to an aggregate object filled with nulls). This behavior can be explicitly set by calling #allowNull(). To change this behavior, call #dontAllowNull(). Then the mapping will build a new instance of the aggregate object that is filled with nulls and place it in the source object. In either situation, when writing, the mapping will place a NULL in all the fields in the database row for the aggregate object. Note: Any aggregate that has a relationship mapping automatically does not allow null.


extractIdentityFieldsForQuery

public java.util.Map extractIdentityFieldsForQuery(java.lang.Object object,
                                                   org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Extract the fields for the Map key from the object to use in a query.

Specified by:
extractIdentityFieldsForQuery in interface MapKeyMapping
Returns:

getAdditionalTablesForJoinQuery

public java.util.List<org.eclipse.persistence.internal.helper.DatabaseTable> getAdditionalTablesForJoinQuery()
INTERNAL: Return any tables that will be required when this mapping is used as part of a join query

Specified by:
getAdditionalTablesForJoinQuery in interface MapKeyMapping
Returns:

getAdditionalSelectionCriteriaForMapKey

public Expression getAdditionalSelectionCriteriaForMapKey()
INTERNAL: Return the selection criteria necessary to select the target object when this mapping is a map key. AggregateObjectMappings do not need any additional selection criteria when they are map keys

Specified by:
getAdditionalSelectionCriteriaForMapKey in interface MapKeyMapping
Returns:

getAggregateToSourceFieldAssociations

public java.util.Vector<Association> getAggregateToSourceFieldAssociations()
INTERNAL: Return a collection of the aggregate to source field associations.


getAggregateToSourceFields

public java.util.Map<java.lang.String,org.eclipse.persistence.internal.helper.DatabaseField> getAggregateToSourceFields()
INTERNAL: Return the hashtable that stores aggregate field name to source fields.


getAttributeClassification

public java.lang.Class getAttributeClassification()
PUBLIC: The classification type for the attribute this mapping represents

Overrides:
getAttributeClassification in class DatabaseMapping

getFieldClassification

public java.lang.Class getFieldClassification(org.eclipse.persistence.internal.helper.DatabaseField fieldToClassify)
INTERNAL: Return the classification for the field contained in the mapping. This is used to convert the row value to a consistent Java value.

Overrides:
getFieldClassification in class DatabaseMapping

getIdentityFieldsForMapKey

public java.util.List<org.eclipse.persistence.internal.helper.DatabaseField> getIdentityFieldsForMapKey()
INTERNAL: Return the fields that make up the identity of the mapped object. For mappings with a primary key, it will be the set of fields in the primary key. For mappings without a primary key it will likely be all the fields

Specified by:
getIdentityFieldsForMapKey in interface MapKeyMapping
Returns:

getAllFieldsForMapKey

public java.util.List<org.eclipse.persistence.internal.helper.DatabaseField> getAllFieldsForMapKey()
INTERNAL: Get all the fields for the map key

Specified by:
getAllFieldsForMapKey in interface MapKeyMapping

getForeignKeyFieldsForMapKey

public java.util.Map<org.eclipse.persistence.internal.helper.DatabaseField,org.eclipse.persistence.internal.helper.DatabaseField> getForeignKeyFieldsForMapKey()
INTERNAL: Return a Map of any foreign keys defined within the the MapKey

Specified by:
getForeignKeyFieldsForMapKey in interface MapKeyMapping
Returns:

getMatchingAttributeValueFromObject

protected java.lang.Object getMatchingAttributeValueFromObject(org.eclipse.persistence.internal.sessions.AbstractRecord row,
                                                               java.lang.Object targetObject,
                                                               org.eclipse.persistence.internal.sessions.AbstractSession session,
                                                               ClassDescriptor descriptor)
INTERNAL: This is used to preserve object identity during a refreshObject() query. Return the object corresponding to the specified database row. The default is to simply return the attribute value.


getMatchingBackupAttributeValue

protected java.lang.Object getMatchingBackupAttributeValue(WriteObjectQuery query,
                                                           java.lang.Object attributeValue)
INTERNAL: This is used to match up objects during an update in a UOW. Return the object corresponding to the specified attribute value. The default is to simply return the backup attribute value.


getNestedJoinQuery

public ObjectLevelReadQuery getNestedJoinQuery(org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager,
                                               ObjectLevelReadQuery query,
                                               org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Return the query that is used when this mapping is part of a joined relationship This method is used when this mapping is used to map the key in a Map

Specified by:
getNestedJoinQuery in interface MapKeyMapping
Returns:

getReferenceDescriptor

public ClassDescriptor getReferenceDescriptor(java.lang.Class theClass,
                                              org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Since aggregate object mappings clone their descriptors, for inheritance the correct child clone must be found.

Overrides:
getReferenceDescriptor in class AggregateMapping

getReferenceFields

protected java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> getReferenceFields()
INTERNAL: Return the fields used to build the aggregate object.


getTargetVersionOfSourceObject

public java.lang.Object getTargetVersionOfSourceObject(java.lang.Object object,
                                                       java.lang.Object parent,
                                                       org.eclipse.persistence.internal.sessions.MergeManager mergeManager,
                                                       org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
INTERNAL: If required, get the targetVersion of the source object from the merge manager. Used with MapKeyContainerPolicy to abstract getting the target version of a source key

Specified by:
getTargetVersionOfSourceObject in interface MapKeyMapping
Returns:

getMapKeyTargetType

public java.lang.Object getMapKeyTargetType()
INTERNAL: Return the class this key mapping maps or the descriptor for it

Specified by:
getMapKeyTargetType in interface MapKeyMapping
Returns:

hasDependency

public boolean hasDependency()
INTERNAL: Return if the mapping has any ownership or other dependency over its target object(s).

Overrides:
hasDependency in class DatabaseMapping

initialize

public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
                throws DescriptorException
INTERNAL: For an aggregate mapping the reference descriptor is cloned. The cloned descriptor is then assigned primary keys and table names before initialize. Once the cloned descriptor is initialized it is assigned as reference descriptor in the aggregate mapping. This is a very specific behavior for aggregate mappings. The original descriptor is used only for creating clones and after that the aggregate mapping never uses it. Some initialization is done in postInitialize to ensure the target descriptor's references are initialized.

Overrides:
initialize in class AggregateMapping
Throws:
DescriptorException

initializeChildInheritance

public void initializeChildInheritance(ClassDescriptor parentDescriptor,
                                       org.eclipse.persistence.internal.sessions.AbstractSession session)
                                throws DescriptorException
INTERNAL: For an aggregate mapping the reference descriptor is cloned. If the reference descriptor is involved in an inheritance tree, all the parent and child descriptors are cloned also. The cloned descriptors are then assigned primary keys and table names before initialize. This is a very specific behavior for aggregate mappings.

Throws:
DescriptorException

initializeParentInheritance

public void initializeParentInheritance(ClassDescriptor parentDescriptor,
                                        ClassDescriptor childDescriptor,
                                        org.eclipse.persistence.internal.sessions.AbstractSession session)
                                 throws DescriptorException
INTERNAL: For an aggregate mapping the reference descriptor is cloned. If the reference descriptor is involved in an inheritance tree, all the parent and child descriptors are cloned also. The cloned descriptors are then assigned primary keys and table names before initialize. This is a very specific behavior for aggregate mappings.

Throws:
DescriptorException

initializeReferenceDescriptor

protected void initializeReferenceDescriptor(ClassDescriptor clonedDescriptor)
INTERNAL: Initialize the cloned reference descriptor with table names and primary keys


iterateOnMapKey

public void iterateOnMapKey(org.eclipse.persistence.internal.descriptors.DescriptorIterator iterator,
                            java.lang.Object element)
INTERNAL: Called when iterating through descriptors to handle iteration on this mapping when it is used as a MapKey

Specified by:
iterateOnMapKey in interface MapKeyMapping
Parameters:
iterator -
element -

isLockableMapping

public boolean isLockableMapping()
INTERNAL: Return whether this mapping should be traversed when we are locking

Overrides:
isLockableMapping in class DatabaseMapping
Returns:

isAggregateObjectMapping

public boolean isAggregateObjectMapping()
INTERNAL: Related mapping should implement this method to return true.

Overrides:
isAggregateObjectMapping in class DatabaseMapping

isChangeTrackingSupported

public boolean isChangeTrackingSupported(Project project)
INTERNAL: Return if this mapping supports change tracking.

Overrides:
isChangeTrackingSupported in class DatabaseMapping

isCascadedLockingSupported

public boolean isCascadedLockingSupported()
INTERNAL Return true if this mapping supports cascaded version optimistic locking.

Overrides:
isCascadedLockingSupported in class DatabaseMapping

isNullAllowed

public boolean isNullAllowed()
PUBLIC: Return if all the fields in the database row for the aggregate object are NULL, then, by default, the mapping will place a null in the appropriate source object (as opposed to an aggregate object filled with nulls). To change this behavior, set the value of this variable to false. Then the mapping will build a new instance of the aggregate object that is filled with nulls and place it in the source object. Note: Any aggregate that has a relationship mapping automatically does not allow null.


postInitialize

public void postInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
                    throws DescriptorException
INTERNAL: For an aggregate mapping the reference descriptor is cloned. The cloned descriptor is then assigned primary keys and table names before initialize. Once the cloned descriptor is initialized it is assigned as reference descriptor in the aggregate mapping. This is a very specific behavior for aggregate mappings. The original descriptor is used only for creating clones and after that the aggregate mapping never uses it. Some initialization is done in postInitialize to ensure the target descriptor's references are initialized.

Overrides:
postInitialize in class DatabaseMapping
Throws:
DescriptorException

preinitializeMapKey

public void preinitializeMapKey(org.eclipse.persistence.internal.helper.DatabaseTable table)
INTERNAL: Making any mapping changes necessary to use a the mapping as a map key prior to initializing the mapping

Specified by:
preinitializeMapKey in interface MapKeyMapping

postInitializeMapKey

public void postInitializeMapKey(org.eclipse.persistence.internal.queries.MappedKeyMapContainerPolicy policy)
INTERNAL: Making any mapping changes necessary to use a the mapping as a map key after initializing the mapping.

Specified by:
postInitializeMapKey in interface MapKeyMapping

readFromReturnRowIntoObject

public java.lang.Object readFromReturnRowIntoObject(org.eclipse.persistence.internal.sessions.AbstractRecord row,
                                                    java.lang.Object targetObject,
                                                    org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey,
                                                    ReadObjectQuery query,
                                                    java.util.Collection handledMappings)
                                             throws DatabaseException
INTERNAL: Build an aggregate object from the specified return row and put it in the specified target object. Return row is merged into object after execution of insert or update call according to ReturningPolicy.

Throws:
DatabaseException

readFromRowIntoObject

public java.lang.Object readFromRowIntoObject(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow,
                                              org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager,
                                              java.lang.Object targetObject,
                                              org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey,
                                              ObjectBuildingQuery sourceQuery,
                                              org.eclipse.persistence.internal.sessions.AbstractSession executionSession,
                                              boolean isTargetProtected)
                                       throws DatabaseException
INTERNAL: Build an aggregate object from the specified row and put it in the specified target object.

Overrides:
readFromRowIntoObject in class DatabaseMapping
Throws:
DatabaseException

rehashFieldDependancies

public void rehashFieldDependancies(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Rehash any hashtables based on fields. This is used to clone descriptors for aggregates, which hammer field names.

Overrides:
rehashFieldDependancies in class DatabaseMapping

requiresDataModificationEventsForMapKey

public boolean requiresDataModificationEventsForMapKey()
INTERNAL: Return whether this mapping requires extra queries to update the rows if it is used as a key in a map. This will typically be true if there are any parts to this mapping that are not read-only.

Specified by:
requiresDataModificationEventsForMapKey in interface MapKeyMapping

setAggregateToSourceFieldAssociations

public void setAggregateToSourceFieldAssociations(java.util.Vector<Association> fieldAssociations)
INTERNAL: Set a collection of the aggregate to source field name associations.


setAggregateToSourceFields

public void setAggregateToSourceFields(java.util.Map<java.lang.String,org.eclipse.persistence.internal.helper.DatabaseField> aggregateToSource)
INTERNAL: Set the hashtable that stores target field name to the source field name.


setIsNullAllowed

public void setIsNullAllowed(boolean isNullAllowed)
PUBLIC: Configure if all the fields in the database row for the aggregate object are NULL, then, by default, the mapping will place a null in the appropriate source object (as opposed to an aggregate object filled with nulls). To change this behavior, set the value of this variable to false. Then the mapping will build a new instance of the aggregate object that is filled with nulls and place it in the source object. Note: Any aggregate that has a relationship mapping automatically does not allow null.


setTableForAggregateMappingKey

public void setTableForAggregateMappingKey(org.eclipse.persistence.internal.helper.DatabaseTable table)
INTERNAL: If this mapping is used as the key of a CollectionTableMapMapping, the table used by this mapping will be the relation table. Set this table.


translateField

protected void translateField(org.eclipse.persistence.internal.helper.DatabaseField sourceField,
                              org.eclipse.persistence.internal.helper.DatabaseField mappingField,
                              ClassDescriptor clonedDescriptor)
INTERNAL: Apply the field translation from the sourceField to the mappingField.


translateFields

protected void translateFields(ClassDescriptor clonedDescriptor,
                               org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: If field names are different in the source and aggregate objects then the translation is done here. The aggregate field name is converted to source field name from the field name mappings stored.


unwrapKey

public java.lang.Object unwrapKey(java.lang.Object key,
                                  org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Allow the key mapping to unwrap the object

Specified by:
unwrapKey in interface MapKeyMapping
Parameters:
key -
session -
Returns:

wrapKey

public java.lang.Object wrapKey(java.lang.Object key,
                                org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Allow the key mapping to wrap the object

Specified by:
wrapKey in interface MapKeyMapping
Parameters:
key -
session -
Returns:

writeFromAttributeIntoRow

public void writeFromAttributeIntoRow(java.lang.Object attribute,
                                      org.eclipse.persistence.internal.sessions.AbstractRecord row,
                                      org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: A subclass should implement this method if it wants different behavior. Write the foreign key values from the attribute to the row.

Overrides:
writeFromAttributeIntoRow in class DatabaseMapping

valueFromObject

public java.lang.Object valueFromObject(java.lang.Object object,
                                        org.eclipse.persistence.internal.helper.DatabaseField field,
                                        org.eclipse.persistence.internal.sessions.AbstractSession session)
                                 throws DescriptorException
INTERNAL: Extract value of the field from the object

Overrides:
valueFromObject in class DatabaseMapping
Throws:
DescriptorException

writeFromObjectIntoRow

public void writeFromObjectIntoRow(java.lang.Object object,
                                   org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow,
                                   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:
writeFromObjectIntoRow in class DatabaseMapping
Throws:
DescriptorException

writeFromObjectIntoRowWithChangeRecord

public void writeFromObjectIntoRowWithChangeRecord(org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord,
                                                   org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow,
                                                   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

writeFromObjectIntoRowForUpdate

public void writeFromObjectIntoRowForUpdate(WriteObjectQuery query,
                                            org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow)
                                     throws DescriptorException
INTERNAL: Get the attribute value from the object and add the changed values to the specified database row.

Overrides:
writeFromObjectIntoRowForUpdate in class DatabaseMapping
Throws:
DescriptorException

writeInsertFieldsIntoRow

public void writeInsertFieldsIntoRow(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow,
                                     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

addPrimaryKeyJoinField

public void addPrimaryKeyJoinField(org.eclipse.persistence.internal.helper.DatabaseField primaryKeyField,
                                   org.eclipse.persistence.internal.helper.DatabaseField secondaryField)
INTERNAL: Add a primary key join column (secondary field). If this contain primary keys and the descriptor(or its subclass) has multiple tables (secondary tables or joined inheritance strategy), this should also know the primary key join columns to handle some cases properly.


EclipseLink 2.2.0, build 'v20110202-r8913' API Reference