Interface MapKeyMapping
- All Superinterfaces:
MapComponentMapping
- All Known Implementing Classes:
AbstractDirectMapping
,AggregateObjectMapping
,DirectToFieldMapping
,DirectToXMLTypeMapping
,EISDirectMapping
,ManyToOneMapping
,OneToOneMapping
,XMLBinaryDataMapping
,XMLDirectMapping
,XMLFragmentMapping
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
Modifier and TypeMethodDescriptionvoid
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 queryvoid
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 queryvoid
addKeyToDeletedObjectsList
(Object object, Map deletedObjects) INTERNAL: For mappings used as MapKeys in MappedKeyContainerPolicy.buildElementClone
(Object element, Object parent, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, Integer refreshCascade, org.eclipse.persistence.internal.sessions.AbstractSession cloningSession, boolean isExisting, boolean isFromSharedCache) Build a clone of the given element in a unitOfWorkbuildSelectionQueryForDirectCollectionKeyMapping
(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 DirectCollectionMappingvoid
cascadeDiscoverAndPersistUnregisteredNewObjects
(Object object, Map newObjects, Map unregisteredExistingObjects, Map visitedObjects, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, boolean getAttributeValueFromObject, Set cascadeErrors) INTERNAL: Cascade discover and persist new objects during commit to the map keyvoid
cascadePerformRemoveIfRequired
(Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, Map visitedObjects, boolean getAttributeValueFromObject) INTERNAL: Cascade perform delete through mappings that require the cascadevoid
cascadeRegisterNewIfRequired
(Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, Map visitedObjects, boolean getAttributeValueFromObject) INTERNAL: Cascade registerNew for Create through mappings that require the cascadecreateMapComponentFromJoinedRow
(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.createMapComponentsFromSerializableKeyInfo
(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.INTERNAL: Create a query key that links to the map keycreateSerializableMapKeyInfo
(Object key, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: Creates the Array of simple types used to recreate this map.createStubbedMapComponentFromSerializableKeyInfo
(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.void
deleteMapKey
(Object objectDeleted, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: For mappings used as MapKeys in MappedKeyContainerPolicy, Delete the passed object if necessary.extractIdentityFieldsForQuery
(Object key, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: Extract the fields for the Map key from the object to use in a queryINTERNAL: Return the selection criteria necessary to select the target objectList<org.eclipse.persistence.internal.helper.DatabaseTable>
INTERNAL: Return any tables that will be required when this mapping is used as part of a join queryList<org.eclipse.persistence.internal.helper.DatabaseField>
INTERNAL: Get all the fields for the map keyMap<org.eclipse.persistence.internal.helper.DatabaseField,
org.eclipse.persistence.internal.helper.DatabaseField> INTERNAL: Return a Map of any foreign keys defined within the the MapKeyList<org.eclipse.persistence.internal.helper.DatabaseField>
INTERNAL: Return the fields that make up the identity of the mapped object.INTERNAL: Return the class this key mapping maps or the descriptor for itgetNestedJoinQuery
(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 relationshipINTERNAL: Get the descriptor for the Map KeygetTargetVersionOfSourceObject
(Object object, 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 managervoid
iterateOnMapKey
(org.eclipse.persistence.internal.descriptors.DescriptorIterator iterator, Object element) INTERNAL: Called when iterating through descriptors to handle iteration on this mapping when it is used as a MapKeyvoid
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 mappingvoid
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 mappingboolean
INTERNAL: Return whether this mapping requires extra queries to update the rows if it is used as a key in a map.INTERNAL: Allow the key mapping to unwrap the objectINTERNAL: Allow the key mapping to wrap the objectMethods inherited from interface org.eclipse.persistence.mappings.foundation.MapComponentMapping
clone, createMapComponentFromRow
-
Method Details
-
addAdditionalFieldsToQuery
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
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
-deletedObjects
-
-
buildElementClone
Object buildElementClone(Object element, Object parent, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, Integer refreshCascade, org.eclipse.persistence.internal.sessions.AbstractSession cloningSession, boolean isExisting, boolean isFromSharedCache) 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(Object object, Map newObjects, Map unregisteredExistingObjects, Map visitedObjects, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, boolean getAttributeValueFromObject, Set cascadeErrors) INTERNAL: Cascade discover and persist new objects during commit to the map key -
cascadePerformRemoveIfRequired
void cascadePerformRemoveIfRequired(Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, Map visitedObjects, boolean getAttributeValueFromObject) INTERNAL: Cascade perform delete through mappings that require the cascade -
cascadeRegisterNewIfRequired
void cascadeRegisterNewIfRequired(Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, Map visitedObjects, boolean getAttributeValueFromObject) INTERNAL: Cascade registerNew for Create through mappings that require the cascade -
createMapComponentFromJoinedRow
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
Object createSerializableMapKeyInfo(Object key, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: Creates the Array of simple types used to recreate this map. -
createMapComponentsFromSerializableKeyInfo
List<Object> createMapComponentsFromSerializableKeyInfo(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. -
createStubbedMapComponentFromSerializableKeyInfo
Object createStubbedMapComponentFromSerializableKeyInfo(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 key object may be a shallow stub of the actual object if the key is an Entity type. -
deleteMapKey
void deleteMapKey(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
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
List<org.eclipse.persistence.internal.helper.DatabaseField> getAllFieldsForMapKey()INTERNAL: Get all the fields for the map key -
getForeignKeyFieldsForMapKey
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
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
Object getTargetVersionOfSourceObject(Object object, 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
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, 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
Map extractIdentityFieldsForQuery(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
INTERNAL: Allow the key mapping to unwrap the object- Parameters:
key
-session
-- Returns:
-
wrapKey
INTERNAL: Allow the key mapping to wrap the object- Parameters:
key
-session
-- Returns:
-