EclipseLink 2.2.0, build 'v20110202-r8913' API Reference

org.eclipse.persistence.mappings.foundation
Interface MapKeyMapping

All Superinterfaces:
MapComponentMapping
All Known Implementing Classes:
AbstractDirectMapping, AggregateObjectMapping, DirectToFieldMapping, DirectToXMLTypeMapping, EISDirectMapping, ManyToOneMapping, OneToOneMapping, XMLBinaryDataMapping, XMLDirectMapping, XMLFragmentMapping

public interface MapKeyMapping
extends MapComponentMapping

MapKeyMapping is implemented by DatabaseMappings that can be used to map the key in a map that uses a MappedKeyMapContainerPolicy. This interface provides the facilities to retreive data for the key from the database, to get data from the object to put in the database, and to appropriately initialize the mappings.

See Also:
MappedKeyMapContainerPolicy, AbstractDirectMapping, AggregateObjectMapping, OneToOneMapping
Author:
tware

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 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 addKeyToDeletedObjectsList(java.lang.Object object, java.util.Map deletedObjects)
          INTERNAL: For mappings used as MapKeys in MappedKeyContainerPolicy.
 java.lang.Object buildElementClone(java.lang.Object element, java.lang.Object parent, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, org.eclipse.persistence.internal.sessions.AbstractSession cloningSession, boolean isExisting)
          Build a clone of the given element in a unitOfWork
 ReadQuery buildSelectionQueryForDirectCollectionKeyMapping(org.eclipse.persistence.internal.queries.ContainerPolicy containerPolicy)
          INTERNAL: Depending on the MapKeyMapping, a different selection query may be required to retrieve the map when the map is based on a DirectCollectionMapping
 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, boolean getAttributeValueFromObject)
          INTERNAL: Cascade perform delete 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 createMapComponentFromJoinedRow(org.eclipse.persistence.internal.sessions.AbstractRecord dbRow, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, 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 used.
 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.
 java.util.Map extractIdentityFieldsForQuery(java.lang.Object key, 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
 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.List<org.eclipse.persistence.internal.helper.DatabaseField> getAllFieldsForMapKey()
          INTERNAL: Get all the fields for the map key
 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
 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
 ClassDescriptor getReferenceDescriptor()
          INTERNAL: Get the descriptor for the Map Key
 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
 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 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
 boolean requiresDataModificationEventsForMapKey()
          INTERNAL: Return whether this mapping requires extra queries to update the rows if it is used as a key in a map.
 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 wrapKey(java.lang.Object key, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Allow the key mapping to wrap the object
 
Methods inherited from interface org.eclipse.persistence.mappings.foundation.MapComponentMapping
createMapComponentFromRow
 

Method Detail

addAdditionalFieldsToQuery

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


addFieldsForMapKey

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


addKeyToDeletedObjectsList

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

Parameters:
object -
manager -

buildElementClone

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

Parameters:
element -
cloningSession -
isExisting -
Returns:

buildSelectionQueryForDirectCollectionKeyMapping

ReadQuery buildSelectionQueryForDirectCollectionKeyMapping(org.eclipse.persistence.internal.queries.ContainerPolicy containerPolicy)
INTERNAL: Depending on the MapKeyMapping, a different selection query may be required to retrieve the map when the map is based on a DirectCollectionMapping

Returns:

cascadeDiscoverAndPersistUnregisteredNewObjects

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


cascadePerformRemoveIfRequired

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


cascadeRegisterNewIfRequired

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


createMapComponentFromJoinedRow

java.lang.Object createMapComponentFromJoinedRow(org.eclipse.persistence.internal.sessions.AbstractRecord dbRow,
                                                 org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager,
                                                 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 used. Returns the key.


createQueryKeyForMapKey

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

Returns:

createSerializableMapKeyInfo

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.


createMapComponentFromSerializableKeyInfo

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.


deleteMapKey

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

Parameters:
objectDeleted -
session -

getAdditionalTablesForJoinQuery

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

Returns:

getAllFieldsForMapKey

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


getForeignKeyFieldsForMapKey

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

Returns:

getReferenceDescriptor

ClassDescriptor getReferenceDescriptor()
INTERNAL: Get the descriptor for the Map Key

Returns:

getIdentityFieldsForMapKey

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

Returns:

getNestedJoinQuery

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

Returns:

getAdditionalSelectionCriteriaForMapKey

Expression getAdditionalSelectionCriteriaForMapKey()
INTERNAL: Return the selection criteria necessary to select the target object

Returns:

getTargetVersionOfSourceObject

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

Returns:

getMapKeyTargetType

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

Returns:

iterateOnMapKey

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

Parameters:
iterator -
element -

extractIdentityFieldsForQuery

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

Returns:

preinitializeMapKey

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

Throws:
DescriptorException

postInitializeMapKey

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

Throws:
DescriptorException

requiresDataModificationEventsForMapKey

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.


unwrapKey

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

Parameters:
key -
session -
Returns:

wrapKey

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

Parameters:
key -
session -
Returns:

EclipseLink 2.2.0, build 'v20110202-r8913' API Reference