Interface MapKeyMapping

    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      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, java.lang.Integer refreshCascade, org.eclipse.persistence.internal.sessions.AbstractSession cloningSession, boolean isExisting, boolean isFromSharedCache)
      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, java.util.Set cascadeErrors)
      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.util.List<java.lang.Object> createMapComponentsFromSerializableKeyInfo​(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.
      java.lang.Object createStubbedMapComponentFromSerializableKeyInfo​(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.
      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
    • 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 -
        deletedObjects -
      • buildElementClone

        java.lang.Object buildElementClone​(java.lang.Object element,
                                           java.lang.Object parent,
                                           org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey,
                                           java.lang.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​(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,
                                                             java.util.Set cascadeErrors)
        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.
      • createMapComponentsFromSerializableKeyInfo

        java.util.List<java.lang.Object> createMapComponentsFromSerializableKeyInfo​(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.
      • createStubbedMapComponentFromSerializableKeyInfo

        java.lang.Object createStubbedMapComponentFromSerializableKeyInfo​(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 key object may be a shallow stub of the actual object if the key is an Entity type.
      • 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: