Package org.eclipse.persistence.mappings
Class DirectCollectionMapping
- java.lang.Object
-
- org.eclipse.persistence.core.mappings.CoreMapping<AttributeAccessor,org.eclipse.persistence.internal.sessions.AbstractSession,org.eclipse.persistence.internal.queries.ContainerPolicy,ClassDescriptor,org.eclipse.persistence.internal.helper.DatabaseField>
-
- org.eclipse.persistence.mappings.DatabaseMapping
-
- org.eclipse.persistence.mappings.ForeignReferenceMapping
-
- org.eclipse.persistence.mappings.CollectionMapping
-
- org.eclipse.persistence.mappings.DirectCollectionMapping
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,ContainerMapping
,RelationalMapping
- Direct Known Subclasses:
DirectMapMapping
public class DirectCollectionMapping extends CollectionMapping implements RelationalMapping
Purpose: This mapping is used to store a collection of simple types (String, Number, Date, etc.) into a single table. The table must store the value and a foreign key to the source object. A converter can be used if the desired object type and the data type do not match.
- See Also:
Converter
,ObjectTypeConverter
,TypeConversionConverter
,SerializedObjectConverter
, Serialized Form- Author:
- Sati
- Since:
- TOPLink/Java 1.0 09/18/2009-2.0 Michael O'Brien - 266912: JPA 2.0 Metamodel API (part of the JSR-317 EJB 3.1 Criteria API) add support for passing BasicMap value type to MapAttributeImpl via new attributeClassification field
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.eclipse.persistence.mappings.DatabaseMapping
DatabaseMapping.WriteType
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.Class
attributeClassification
protected java.lang.String
attributeClassificationName
protected ModifyQuery
changeSetDeleteNullQuery
protected ModifyQuery
changeSetDeleteQuery
Used for deletion when ChangeSets are usedprotected static java.lang.String
Delete
Used for data modification events.protected static java.lang.String
DeleteAll
protected static java.lang.String
DeleteAtIndex
protected ModifyQuery
deleteAtIndexQuery
Used (only in case listOrderField !protected org.eclipse.persistence.internal.helper.DatabaseField
directField
The direct field name is converted and storedprotected boolean
hasCustomDeleteAtIndexQuery
protected boolean
hasCustomDeleteQuery
protected boolean
hasCustomInsertQuery
protected boolean
hasCustomUpdateAtIndexQuery
protected HistoryPolicy
historyPolicy
protected static java.lang.String
Insert
protected DataModifyQuery
insertQuery
Used for insertion for m-m and dc, not used in 1-m.protected java.util.List<Expression>
orderByExpressions
protected java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField>
referenceKeyFields
protected org.eclipse.persistence.internal.helper.DatabaseTable
referenceTable
Stores the reference tableprotected java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField>
sourceKeyFields
protected static java.lang.String
UpdateAtIndex
protected ModifyQuery
updateAtIndexQuery
Used (only in case listOrderField !protected Converter
valueConverter
Allows user defined conversion between the object value and the database value.protected java.lang.String
valueConverterClassName
-
Fields inherited from class org.eclipse.persistence.mappings.CollectionMapping
changeOrderTargetQuery, containerPolicy, deleteAllQuery, hasCustomDeleteAllQuery, hasOrderBy, isListOrderFieldSupported, isSynchronizeOnMerge, listOrderField, mustDeleteReferenceObjectsOneByOne, orderCorrectionType
-
Fields inherited from class org.eclipse.persistence.mappings.ForeignReferenceMapping
batchFetchType, cascadeDetach, cascadeMerge, cascadePersist, cascadeRefresh, cascadeRemove, forceInitializationOfSelectionCriteria, hasCustomSelectionQuery, indirectionPolicy, INNER_JOIN, isCascadeOnDeleteSetOnDatabase, isPrivateOwned, joinFetch, mappedBy, NONE, OUTER_JOIN, partitioningPolicy, partitioningPolicyName, QUERY_BATCH_PARAMETER, referenceClass, referenceClassName, referenceDescriptor, relationshipPartner, relationshipPartnerAttributeName, requiresTransientWeavedFields, selectionQuery, tempInitSession
-
Fields inherited from class org.eclipse.persistence.mappings.DatabaseMapping
attributeAccessor, attributeName, derivedIdMapping, derivesId, descriptor, fields, isCacheable, isInSopObject, isJPAId, isLazy, isMapKeyMapping, isOptional, isPrimaryKeyMapping, isReadOnly, isRemotelyInitialized, mapsIdValue, NO_FIELDS, NO_WEIGHT, properties, unconvertedProperties, weight, WEIGHT_AGGREGATE, WEIGHT_DIRECT, WEIGHT_TO_ONE, WEIGHT_TRANSFORM
-
-
Constructor Summary
Constructors Constructor Description DirectCollectionMapping()
PUBLIC: Default constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAscendingOrdering()
PUBLIC: Provide ascending order support for this direct collection mapping.void
addDescendingOrdering()
PUBLIC: Provide descending order support for this direct collection mapping.void
addOrdering(Expression expression)
ADVANCED: Used this method to add custom ordering expressions when fetching the collection.void
addReferenceKeyField(org.eclipse.persistence.internal.helper.DatabaseField referenceForeignKeyField, org.eclipse.persistence.internal.helper.DatabaseField sourcePrimaryKeyField)
PUBLIC: Add the reference key field.void
addReferenceKeyFieldName(java.lang.String referenceForeignKeyFieldName, java.lang.String sourcePrimaryKeyFieldName)
PUBLIC: Add the name of the reference key field.protected Expression
buildBatchCriteria(ExpressionBuilder builder, ObjectLevelReadQuery query)
INTERNAL: Return the selection criteria used to IN batch fetching.void
buildCopy(java.lang.Object copy, java.lang.Object original, CopyGroup group)
INTERNAL: Copy of the attribute of the object.java.lang.Object
buildElementClone(java.lang.Object element, java.lang.Object parent, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, java.lang.Integer refreshCascade, org.eclipse.persistence.internal.sessions.AbstractSession cloningSession, boolean isExisting, boolean isFromSharedCache)
INTERNAL: Clone the element, if necessary.Expression
buildExpression(java.lang.Object queryObject, QueryByExamplePolicy policy, Expression expressionBuilder, java.util.Map processedObjects, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: In case Query By Example is used, this method builds and returns an expression that corresponds to a single attribute and it's value.protected void
buildListOrderField()
INTERNAL: Verifies listOrderField's table: it must be reference table.void
calculateDeferredChanges(org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Used by AttributeLevelChangeTracking to update a changeRecord with calculated changes as apposed to detected changes.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, java.util.Set cascadeErrors)
INTERNAL: Cascade discover and persist new objects during commit.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 cascadevoid
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 UnitOfWorkChangeSetvoid
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 cascadejava.lang.Object
clone()
INTERNAL: The mapping clones itself to create deep copy.void
collectQueryParameters(java.util.Set<org.eclipse.persistence.internal.helper.DatabaseField> cacheFields)
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 entityvoid
compareCollectionsForChange(java.lang.Object oldCollection, java.lang.Object newCollection, org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: This method is used to calculate the differences between two collections.org.eclipse.persistence.internal.sessions.ChangeRecord
compareForChange(java.lang.Object clone, java.lang.Object backUp, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: This method compares the changes between two direct collections.protected boolean
compareLists(java.util.List firstList, java.util.List secondList)
Compare two lists.void
compareListsForChange(java.util.List oldList, java.util.List newList, org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: This method is used to calculate the differences between two Lists.boolean
compareObjects(java.lang.Object firstObject, java.lang.Object secondObject, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Compare the attributes belonging to this mapping for the objects.void
convertClassNamesToClasses(java.lang.ClassLoader classLoader)
INTERNAL: Convert all the class-name-based settings in this mapping to actual class-based settings This method is implemented by subclasses as necessary.protected Expression
createWhereClauseForDeleteNullQuery(ExpressionBuilder builder)
protected Expression
createWhereClauseForDeleteQuery(ExpressionBuilder builder)
protected void
executeBatchQuery(DatabaseQuery query, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, java.util.Map referenceDataByKey, org.eclipse.persistence.internal.sessions.AbstractSession session, org.eclipse.persistence.internal.sessions.AbstractRecord translationRow)
INTERNAL: Prepare and execute the batch query and store the results for each source object in a map keyed by the mappings source keys of the source objects.protected java.lang.Object
extractBatchKeyFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Extract the primary key value from the source row.protected java.lang.Object
extractKeyFromTargetRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Extract the source primary key value from the reference direct row.void
fixRealObjectReferences(java.lang.Object object, java.util.Map objectInformation, java.util.Map processedObjects, ObjectLevelReadQuery query, DistributedSession session)
INTERNAL: At this point, we realize we don't have indirection; so we need to replace the reference object(s) with the corresponding object(s) from the remote session.protected Expression
getAdditionalFieldsBaseExpression(ReadQuery query)
INTERNAL: Return the base expression to use for adding fields to the query.java.lang.Class
getAttributeClassification()
PUBLIC: Some databases do not properly support all of the base data types.java.lang.String
getAttributeClassificationName()
INTERNAL: Return the class name of the attribute type.protected ModifyQuery
getDeleteAtIndexQuery()
protected ModifyQuery
getDeleteNullQuery()
protected ModifyQuery
getDeleteQuery()
org.eclipse.persistence.internal.helper.DatabaseField
getDirectField()
INTERNAL: Return the direct field.java.lang.String
getDirectFieldName()
PUBLIC: Returns the name of the field name in the reference table.java.util.Vector
getFieldsForTranslationInAggregate()
INTERNAL: Return source key fields for translation by an AggregateObjectMappingjava.lang.Object
getFieldValue(java.lang.Object attributeValue, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Convert the attribute value to a field value.HistoryPolicy
getHistoryPolicy()
PUBLIC: Allow history support on the reference table.protected DataModifyQuery
getInsertQuery()
Expression
getJoinCriteria(org.eclipse.persistence.internal.expressions.ObjectExpression context, Expression base)
INTERNAL: Returns the join criteria stored in the mapping selection query.java.lang.Object
getObjectCorrespondingTo(java.lang.Object object, DistributedSession session, java.util.Map objectDescriptors, java.util.Map processedObjects, ObjectLevelReadQuery query)
INTERNAL: return the object on the client corresponding to the specified object.java.lang.Object
getObjectValue(java.lang.Object fieldValue, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Convert the field value to an attribute value.java.util.List<Expression>
getOrderByExpressions()
PUBLIC: Return the order by expression.java.util.List<Expression>
getOrderByNormalizedExpressions(Expression base)
INTERNAL: Return null if this mapping is used in an order by.java.lang.Class
getReferenceClass()
INTERNAL: This cannot be used with direct collection mappings.java.lang.String
getReferenceClassName()
INTERNAL: Returns the reference class name.ClassDescriptor
getReferenceDescriptor()
INTERNAL: There is none on direct collection.java.util.Vector
getReferenceKeyFieldNames()
INTERNAL: Return the reference key field names associated with the mapping.java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField>
getReferenceKeyFields()
INTERNAL: Return the reference key fields.org.eclipse.persistence.internal.helper.DatabaseTable
getReferenceTable()
INTERNAL: Return the direct table.java.lang.String
getReferenceTableName()
PUBLIC: Returns the name of the reference tablejava.lang.String
getReferenceTableQualifiedName()
PUBLIC: Returns the qualified name of the reference table.DatabaseMapping
getRelationshipPartner()
INTERNAL: Return the relationshipPartner mapping for this bi-directional mapping.java.util.Vector
getSelectFields()
INTERNAL: Returns the set of fields that should be selected to build this mapping's value(s).protected org.eclipse.persistence.internal.queries.ContainerPolicy
getSelectionQueryContainerPolicy()
INTERNAL: Get the container policy from the selection query for this mapping.java.util.Vector
getSelectTables()
INTERNAL: Returns the table(s) that should be selected to build this mapping's value(s).java.util.Vector
getSourceKeyFieldNames()
PUBLIC: Return the source key field names associated with the mapping.java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField>
getSourceKeyFields()
INTERNAL: Return the source key fields.protected ModifyQuery
getUpdateAtIndexQuery()
Converter
getValueConverter()
PUBLIC: Return the converter on the mapping.protected boolean
hasCustomDeleteAtIndexQuery()
protected boolean
hasCustomDeleteQuery()
protected boolean
hasCustomInsertQuery()
protected boolean
hasCustomUpdateAtIndexQuery()
boolean
hasNestedIdentityReference()
INTERNAL: Indicates whether the mapping (or at least one of its nested mappings, at any nested depth) references an entity.void
initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Initialize and validate the mapping properties.protected void
initializeDeleteAllQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
Initialize delete all query.protected void
initializeDeleteAtIndexQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
protected void
initializeDeleteNullQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
protected void
initializeDeleteQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
protected void
initializeDirectField(org.eclipse.persistence.internal.sessions.AbstractSession session)
The field name on the reference table is initialized and cached.protected void
initializeInsertQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
Initialize insert query.protected void
initializeListOrderField(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Initializes listOrderField.protected void
initializeReferenceDescriptor(org.eclipse.persistence.internal.sessions.AbstractSession session)
There is no reference descriptorprotected void
initializeReferenceKeys(org.eclipse.persistence.internal.sessions.AbstractSession session)
The reference keys on the reference table are initializedprotected void
initializeReferenceTable(org.eclipse.persistence.internal.sessions.AbstractSession session)
Set the table qualifier on the reference table if requiredprotected void
initializeSelectionCriteria(org.eclipse.persistence.internal.sessions.AbstractSession session)
protected void
initializeSelectionQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
The selection query is initializedprotected void
initializeSelectionStatement(org.eclipse.persistence.internal.sessions.AbstractSession session)
protected void
initializeSourceKeys(org.eclipse.persistence.internal.sessions.AbstractSession session)
The source keys are initializedprotected void
initializeSourceKeysWithDefaults(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: If a user does not specify the source key then the primary keys of the source table are used.protected void
initializeUpdateAtIndexQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
protected void
initOrRebuildSelectQuery()
INTERNAL: Used by DirectMapMapping to rebuild select query.boolean
isCandidateForPrivateOwnedRemoval()
INTERNAL: DirectCollectionMapping contents should not be considered for addition to the UnitOfWork private owned objects list for removal.boolean
isCascadedLockingSupported()
INTERNAL Return true if this mapping supports cascaded version optimistic locking.boolean
isDirectCollectionMapping()
INTERNAL:boolean
isElementCollectionMapping()
INTERNAL:boolean
isJoiningSupported()
INTERNAL: Return if this mapping support joining.protected boolean
isKeyForSourceSpecified()
INTERNAL: Checks if source and target keys are mentioned by the user or not.boolean
isLockableMapping()
INTERNAL: Return whether this mapping should be traversed when we are lockingboolean
isOwned()
INTERNAL:boolean
isRelationalMapping()
INTERNAL: All relational mappings should implement this method to return true.void
iterateOnElement(org.eclipse.persistence.internal.descriptors.DescriptorIterator iterator, java.lang.Object element)
INTERNAL: Iterate on the specified element.void
iterateOnRealAttributeValue(org.eclipse.persistence.internal.descriptors.DescriptorIterator iterator, java.lang.Object realAttributeValue)
INTERNAL: Iterate on the attribute value.protected void
mergeAddRemoveChanges(java.lang.Object valueOfTarget, java.lang.Object delegateTarget, org.eclipse.persistence.internal.sessions.DirectCollectionChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Merge changes by adding and removing from the change record to the target object, and its delegate object if instance of IndirectCollection.void
mergeChangesIntoObject(java.lang.Object target, org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, java.lang.Object source, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
INTERNAL: Merge changes from the source to the target object.void
mergeIntoObject(java.lang.Object target, boolean isTargetUnInitialized, java.lang.Object source, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
INTERNAL: Merge changes from the source to the target object.void
performDataModificationEvent(java.lang.Object[] event, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Perform the commit event.void
postCalculateChanges(ChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Overridden by mappings that require additional processing of the change record after the record has been calculated.void
postInsert(WriteObjectQuery query)
INTERNAL: Insert the private owned object.void
postUpdate(WriteObjectQuery writeQuery)
INTERNAL: Update private owned part.protected void
postUpdateWithChangeSet(WriteObjectQuery writeQuery)
INTERNAL: Update private owned part.protected void
postUpdateWithChangeSetListOrder(WriteObjectQuery writeQuery)
INTERNAL: Update private owned part.void
preDelete(DeleteObjectQuery query)
INTERNAL: Delete private owned part.ReadQuery
prepareNestedBatchQuery(ObjectLevelReadQuery query)
INTERNAL: Clone and prepare the selection query as a nested batch read query.ObjectLevelReadQuery
prepareNestedJoins(org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery baseQuery, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Clone and prepare the joined direct query.protected void
prepareTranslationRow(org.eclipse.persistence.internal.sessions.AbstractRecord translationRow, java.lang.Object object, ClassDescriptor descriptor, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: The translation row may require additional fields than the primary key if the mapping in not on the primary key.void
recordPrivateOwnedRemovals(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Overridden by mappings that require additional processing of the change record after the record has been calculated.void
remoteInitialization(DistributedSession session)
INTERNAL: Once descriptors are serialized to the remote session.java.util.Map
replaceValueHoldersIn(java.lang.Object object, org.eclipse.persistence.internal.sessions.remote.RemoteSessionController controller)
INTERNAL: replace the value holders in the specified reference object(s)void
setAttributeClassification(java.lang.Class attributeClassification)
PUBLIC: Some databases do not properly support all of the base data types.void
setAttributeClassificationName(java.lang.String attributeClassificationName)
INTERNAL: Set the name of the class for MW usage.void
setContainerPolicy(org.eclipse.persistence.internal.queries.ContainerPolicy containerPolicy)
ADVANCED: Configure the mapping to use a container policy.void
setCustomDeleteAtIndexQuery(ModifyQuery query)
PUBLIC: The default delete by index query for this mapping can be overridden by specifying the new query.void
setCustomDeleteQuery(ModifyQuery query)
PUBLIC: The default delete query for this mapping can be overridden by specifying the new query.void
setCustomInsertQuery(DataModifyQuery query)
PUBLIC: The default insert query for mapping can be overridden by specifying the new query.void
setCustomUpdateAtIndexQuery(ModifyQuery query)
PUBLIC: The default delete by index query for this mapping can be overridden by specifying the new query.protected void
setDeleteQuery(ModifyQuery query)
void
setDeleteSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's delete SQL string.void
setDirectField(org.eclipse.persistence.internal.helper.DatabaseField field)
PUBLIC: Set the direct field in the reference table.void
setDirectFieldClassification(java.lang.Class fieldType)
ADVANCED: Set the class type of the field value.void
setDirectFieldClassificationName(java.lang.String className)
ADVANCED: Set the class type of the field value.void
setDirectFieldName(java.lang.String fieldName)
PUBLIC: Set the direct field name in the reference table.protected void
setHasCustomDeleteQuery(boolean bool)
protected void
setHasCustomInsertQuery(boolean bool)
void
setHistoryPolicy(HistoryPolicy policy)
PUBLIC: Support history on the reference table.protected void
setInsertQuery(DataModifyQuery insertQuery)
void
setInsertSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's insert SQL string.void
setReferenceClass(java.lang.Class referenceClass)
INTERNAL: This cannot be used with direct collection mappings.void
setReferenceClassName(java.lang.String referenceClassName)
INTERNAL: Used by MW.void
setReferenceKeyFieldName(java.lang.String fieldName)
PUBLIC: Set the name of the reference key field.void
setReferenceKeyFieldNames(java.util.Vector fieldNames)
INTERNAL: Set the reference key field names associated with the mapping.void
setReferenceKeyFields(java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> aVector)
INTERNAL: Set the reference fields.void
setReferenceTable(org.eclipse.persistence.internal.helper.DatabaseTable table)
INTERNAL: Set the reference table.void
setReferenceTableName(java.lang.String tableName)
PUBLIC: Set the reference table name.void
setSelectionCriteria(Expression anExpression)
PUBLIC: Sets the selection criteria to be used as a where clause to read reference objects.protected void
setSelectionQueryContainerPolicy(org.eclipse.persistence.internal.queries.ContainerPolicy containerPolicy)
INTERNAL: Set the container policy on the selection query for this mapping.void
setSessionName(java.lang.String name)
PUBLIC: Set the name of the session to execute the mapping's queries under.void
setSourceKeyFieldNames(java.util.Vector fieldNames)
INTERNAL: Set the source key field names associated with the mapping.void
setSourceKeyFields(java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> sourceKeyFields)
INTERNAL: Set the source fields.void
setValueConverter(Converter valueConverter)
PUBLIC: Set the converter on the mapping.void
setValueConverterClassName(java.lang.String valueConverterClassName)
PUBLIC: Set the converter class name on the mapping.boolean
shouldUseListOrderFieldTableExpression()
INTERNAL: Indicates whether getListOrderFieldExpression method should create field expression on table expression.protected void
simpleAddToCollectionChangeRecord(java.lang.Object objectToAdd, java.lang.Integer index, boolean isSet, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session, boolean isChangeApplied)
void
simpleAddToCollectionChangeRecord(java.lang.Object referenceKey, java.lang.Object objectToAdd, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session)
ADVANCED: This method is used to have an object add to a collection once the changeSet is applied The referenceKey parameter should only be used for direct Maps.protected void
simpleRemoveFromCollectionChangeRecord(java.lang.Object objectToRemove, java.lang.Integer index, boolean isSet, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session, boolean isChangeApplied)
void
simpleRemoveFromCollectionChangeRecord(java.lang.Object referenceKey, java.lang.Object objectToRemove, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session)
ADVANCED: This method is used to have an object removed from a collection once the changeSet is applied The referenceKey parameter should only be used for direct Maps.void
updateChangeRecord(java.lang.Object clone, java.lang.Object newValue, java.lang.Object oldValue, org.eclipse.persistence.internal.sessions.ObjectChangeSet objectChangeSet, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Either create a new change record or update with the new value.void
updateCollectionChangeRecord(CollectionChangeEvent event, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Add or removes a new value and its change set to the collection change record based on the event passed in.void
useMapClass(java.lang.Class concreteClass, java.lang.String methodName)
PUBLIC: It is illegal to use a Map as the container of a DirectCollectionMapping.java.lang.Object
valueFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, org.eclipse.persistence.internal.sessions.AbstractSession session, boolean isTargetProtected, java.lang.Boolean[] wasCacheUsed)
INTERNAL: Return the value of the reference attribute or a value holder.protected java.lang.Object
valueFromRowInternalWithJoin(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, org.eclipse.persistence.internal.sessions.AbstractSession executionSession, boolean isTargetProtected)
INTERNAL: Return the value of the field from the row or a value holder on the query to obtain the object.boolean
verifyDelete(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Checks if object is deleted from the database or not.-
Methods inherited from class org.eclipse.persistence.mappings.CollectionMapping
addAggregateOrderBy, addAscendingOrdering, addDescendingOrdering, addOrderBy, buildBackupCloneForPartObject, buildChangeRecord, buildCloneForPartObject, buildContainerClone, buildElementUnitOfWorkClone, buildReferencesPKList, compareLists, compareListsAndWrite, compareObjectsAndWrite, compareObjectsWithoutPrivateOwned, compareObjectsWithPrivateOwned, copyElement, extractResultFromBatchQuery, getContainerPolicy, getDeleteAllQuery, getListOrderField, getOrderByQueryKeyExpressions, getOrderCorrectionType, getRealCollectionAttributeValueFromObject, getTargetPrimaryKeyFields, hasCustomDeleteAllQuery, hasOrderBy, initializeChangeOrderTargetQuery, initializeListOrderFieldTable, isAttributeValueInstantiatedOrChanged, isChangeTrackingSupported, isCollectionMapping, isListOrderFieldSupported, isMapKeyObjectRelationship, load, loadAll, mustDeleteReferenceObjectsOneByOne, objectAddedDuringUpdate, objectOrderChangedDuringUpdate, objectRemovedDuringUpdate, objectUnchangedDuringUpdate, objectUnchangedDuringUpdate, postDelete, postInitialize, postPrepareNestedBatchQuery, preInsert, preUpdate, readPrivateOwnedForObject, setChangeListener, setCustomDeleteAllQuery, setDeleteAllCall, setDeleteAllQuery, setDeleteAllSQLString, setHasCustomDeleteAllQuery, setListOrderField, setListOrderFieldName, setMustDeleteReferenceObjectsOneByOne, setOrderCorrectionType, setUseLazyInstantiationForIndirectCollection, shouldUseLazyInstantiationForIndirectCollection, updateChangeRecordForSelfMerge, useCollectionClass, useCollectionClassName, useListClassName, useMapClass, useMapClassName, useSortedSetClass, useSortedSetClassName, useSortedSetClassName, useTransparentCollection, useTransparentList, useTransparentMap, useTransparentSet, validateBeforeInitialization, valueFromPKList, writeChanges
-
Methods inherited from class org.eclipse.persistence.mappings.ForeignReferenceMapping
addForeignKeyField, addTargetForeignKeyField, batchedValueFromRow, buildBackupClone, buildClone, buildCloneFromRow, checkCacheForBatchKey, createCloneValueHolder, dontDoMerge, dontUseBatchReading, dontUseIndirection, extendPessimisticLockScopeInSourceQuery, extendPessimisticLockScopeInTargetQuery, fixObjectReferences, getAttributeValueFromObject, getAttributeValueWithClonedValueHolders, getBatchFetchType, getExtendPessimisticLockScopeDedicatedQuery, getIndirectionPolicy, getJoinFetch, getMappedBy, getPartitioningPolicy, getPartitioningPolicyName, getRealAttributeValueFromAttribute, getRelationshipPartnerAttributeName, getSelectionCriteria, getSelectionQuery, getTempSession, getValueFromRemoteValueHolder, hasCustomSelectionQuery, hasDependency, instantiateAttribute, isAttributeValueFromObjectInstantiated, isAttributeValueFullyBuilt, isAttributeValueInstantiated, isCascadeDetach, isCascadeMerge, isCascadeOnDeleteSetOnDatabase, isCascadePersist, isCascadeRefresh, isCascadeRemove, isExtendingPessimisticLockScope, isForeignReferenceMapping, isInnerJoinFetched, isJoinFetched, isLazy, isOuterJoinFetched, isPrivateOwned, iterate, mergeRemoteValueHolder, preInitialize, prepareHistoricalQuery, prepareNestedJoinQueryClone, privateOwnedRelationship, readFromRowIntoObject, requiresTransientWeavedFields, setBatchFetchType, setCascadeAll, setCascadeDetach, setCascadeMerge, setCascadePersist, setCascadeRefresh, setCascadeRemove, setCustomSelectionQuery, setForceInitializationOfSelectionCriteria, setHasCustomSelectionQuery, setIndirectionPolicy, setIsCacheable, setIsCascadeOnDeleteSetOnDatabase, setIsPrivateOwned, setJoinFetch, setMappedBy, setPartitioningPolicy, setPartitioningPolicyName, setRealAttributeValueInObject, setReferenceDescriptor, setRelationshipPartner, setRelationshipPartnerAttributeName, setRequiresTransientWeavedFields, setSelectionCall, setSelectionQuery, setSelectionSQLString, setShouldExtendPessimisticLockScope, setTempSession, setUsesBatchReading, setUsesIndirection, shouldExtendPessimisticLockScope, shouldExtendPessimisticLockScopeInDedicatedQuery, shouldExtendPessimisticLockScopeInSourceQuery, shouldExtendPessimisticLockScopeInTargetQuery, shouldForceInitializationOfSelectionCriteria, shouldInitializeSelectionCriteria, shouldMergeCascadeParts, shouldMergeCascadeReference, shouldObjectModifyCascadeToParts, shouldRefreshCascadeParts, shouldUseBatchReading, shouldUseValueFromRowWithJoin, trimRowForJoin, trimRowForJoin, useBasicIndirection, useBatchReading, useContainerIndirection, useInnerJoinFetch, useOuterJoinFetch, usesIndirection, useWeavedIndirection, valueFromRowInternal, valueFromRowInternal
-
Methods inherited from class org.eclipse.persistence.mappings.DatabaseMapping
addUnconvertedProperty, buildObjectJoinExpression, buildObjectJoinExpression, buildShallowOriginalFromRow, cloneFields, collectFields, convertConverterClassNamesToClasses, derivesId, earlyPreDelete, extractNestedExpressions, extractNestedNonAggregateExpressions, getAttributeAccessor, getAttributeName, getDerivedIdMapping, getDescriptor, getField, getFieldClassification, getFields, getGetMethodName, getMapsIdValue, getProperties, getProperty, getRealAttributeValueFromObject, getSetMethodName, getUnconvertedProperties, getWeight, hasConstraintDependency, hasInverseConstraintDependency, hasMapsIdValue, hasRootExpressionThatShouldUseOuterJoin, hasUnconvertedProperties, isAbstractColumnMapping, isAbstractCompositeCollectionMapping, isAbstractCompositeDirectCollectionMapping, isAbstractCompositeObjectMapping, isAbstractDirectMapping, isAggregateCollectionMapping, isAggregateMapping, isAggregateObjectMapping, isCacheable, isCloningRequired, isDatabaseMapping, isDirectMapMapping, isDirectToFieldMapping, isDirectToXMLTypeMapping, isEISMapping, isInAndOutSopObject, isInOnlySopObject, isInSopObject, isJPAId, isManyToManyMapping, isManyToOneMapping, isMapKeyMapping, isMultitenantPrimaryKeyMapping, isNestedTableMapping, isObjectReferenceMapping, isOneToManyMapping, isOneToOneMapping, isOptional, isOutOnlySopObject, isOutSopObject, isPrimaryKeyMapping, isReadOnly, isReferenceMapping, isRemotelyInitialized, isStructureMapping, isTransformationMapping, isUnidirectionalOneToManyMapping, isUsingMethodAccess, isVariableOneToOneMapping, isWriteOnly, isXMLMapping, postCalculateChangesOnDeleted, postInitializeSourceAndTargetExpressions, prepareCascadeLockingPolicy, readFromResultSetIntoObject, readOnly, readWrite, rehashFieldDependancies, remotelyInitialized, setAttributeAccessor, setAttributeName, setAttributeValueInObject, setDerivedIdMapping, setDerivesId, setDescriptor, setFields, setGetMethodName, setIsInAndOutSopObject, setIsInSopObject, setIsJPAId, setIsLazy, setIsMapKeyMapping, setIsOptional, setIsOutSopObject, setIsPrimaryKeyMapping, setIsReadOnly, setMapsIdValue, setProperties, setProperty, setSetMethodName, setWeight, toString, validateAfterInitialization, valueFromObject, valueFromResultSet, valueFromRow, writeFromAttributeIntoRow, writeFromObjectIntoRow, writeFromObjectIntoRowForShallowInsert, writeFromObjectIntoRowForShallowInsertWithChangeRecord, writeFromObjectIntoRowForUpdate, writeFromObjectIntoRowForUpdateAfterShallowInsert, writeFromObjectIntoRowForUpdateBeforeShallowDelete, writeFromObjectIntoRowForWhereClause, writeFromObjectIntoRowWithChangeRecord, writeInsertFieldsIntoRow, writeUpdateFieldsIntoRow
-
-
-
-
Field Detail
-
Delete
protected static final java.lang.String Delete
Used for data modification events.- See Also:
- Constant Field Values
-
Insert
protected static final java.lang.String Insert
- See Also:
- Constant Field Values
-
DeleteAll
protected static final java.lang.String DeleteAll
- See Also:
- Constant Field Values
-
DeleteAtIndex
protected static final java.lang.String DeleteAtIndex
- See Also:
- Constant Field Values
-
UpdateAtIndex
protected static final java.lang.String UpdateAtIndex
- See Also:
- Constant Field Values
-
valueConverter
protected Converter valueConverter
Allows user defined conversion between the object value and the database value.
-
valueConverterClassName
protected java.lang.String valueConverterClassName
-
orderByExpressions
protected java.util.List<Expression> orderByExpressions
-
referenceTable
protected org.eclipse.persistence.internal.helper.DatabaseTable referenceTable
Stores the reference table
-
directField
protected org.eclipse.persistence.internal.helper.DatabaseField directField
The direct field name is converted and stored
-
sourceKeyFields
protected java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> sourceKeyFields
-
referenceKeyFields
protected java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> referenceKeyFields
-
insertQuery
protected DataModifyQuery insertQuery
Used for insertion for m-m and dc, not used in 1-m.
-
changeSetDeleteQuery
protected ModifyQuery changeSetDeleteQuery
Used for deletion when ChangeSets are used
-
changeSetDeleteNullQuery
protected transient ModifyQuery changeSetDeleteNullQuery
-
hasCustomDeleteQuery
protected boolean hasCustomDeleteQuery
-
hasCustomInsertQuery
protected boolean hasCustomInsertQuery
-
historyPolicy
protected HistoryPolicy historyPolicy
-
deleteAtIndexQuery
protected ModifyQuery deleteAtIndexQuery
Used (only in case listOrderField != null) to delete object with particular orderFieldValue
-
updateAtIndexQuery
protected ModifyQuery updateAtIndexQuery
Used (only in case listOrderField != null) to update orderFieldValue of object with particular orderFieldValue
-
hasCustomDeleteAtIndexQuery
protected boolean hasCustomDeleteAtIndexQuery
-
hasCustomUpdateAtIndexQuery
protected boolean hasCustomUpdateAtIndexQuery
-
attributeClassification
protected transient java.lang.Class attributeClassification
- Since:
- Java Persistence API 2.0 Referenced by MapAttributeImpl to pick up the BasicMap value parameter type To specify the conversion type
-
attributeClassificationName
protected java.lang.String attributeClassificationName
-
-
Method Detail
-
addAscendingOrdering
public void addAscendingOrdering()
PUBLIC: Provide ascending order support for this direct collection mapping.
-
addDescendingOrdering
public void addDescendingOrdering()
PUBLIC: Provide descending order support for this direct collection mapping.
-
addOrdering
public void addOrdering(Expression expression)
ADVANCED: Used this method to add custom ordering expressions when fetching the collection. This could be things like expressions using a functions like UPPER or NULLS LAST etc.
-
isRelationalMapping
public boolean isRelationalMapping()
Description copied from class:DatabaseMapping
INTERNAL: All relational mappings should implement this method to return true.- Overrides:
isRelationalMapping
in classDatabaseMapping
-
getValueConverter
public Converter getValueConverter()
PUBLIC: Return the converter on the mapping. A converter can be used to convert between the direct collection's object value and database value.
-
setValueConverter
public void setValueConverter(Converter valueConverter)
PUBLIC: Set the converter on the mapping. A converter can be used to convert between the direct collection's object value and database value.
-
setValueConverterClassName
public void setValueConverterClassName(java.lang.String valueConverterClassName)
PUBLIC: Set the converter class name on the mapping. Initialized in convertClassNamesToClasses. A converter can be used to convert between the direct collection's object value and database value.
-
addReferenceKeyField
public void addReferenceKeyField(org.eclipse.persistence.internal.helper.DatabaseField referenceForeignKeyField, org.eclipse.persistence.internal.helper.DatabaseField sourcePrimaryKeyField)
PUBLIC: Add the reference key field. This is used for composite reference keys. This is the foreign key field in the direct table referencing the primary key of the source object. Both the reference field and the source field that it references must be provided.
-
addReferenceKeyFieldName
public void addReferenceKeyFieldName(java.lang.String referenceForeignKeyFieldName, java.lang.String sourcePrimaryKeyFieldName)
PUBLIC: Add the name of the reference key field. This is used for composite reference keys. This is the foreign key field in the direct table referencing the primary key of the source object. Both the reference field name and the name of the source field that it references must be provided.
-
prepareNestedBatchQuery
public ReadQuery prepareNestedBatchQuery(ObjectLevelReadQuery query)
INTERNAL: Clone and prepare the selection query as a nested batch read query. This is used for nested batch reading.- Overrides:
prepareNestedBatchQuery
in classForeignReferenceMapping
-
prepareNestedJoins
public ObjectLevelReadQuery prepareNestedJoins(org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery baseQuery, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Clone and prepare the joined direct query. Since direct-collection does not build objects a nest query is not required.- Overrides:
prepareNestedJoins
in classForeignReferenceMapping
-
valueFromRowInternalWithJoin
protected java.lang.Object valueFromRowInternalWithJoin(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, org.eclipse.persistence.internal.sessions.AbstractSession executionSession, boolean isTargetProtected) throws DatabaseException
INTERNAL: Return the value of the field from the row or a value holder on the query to obtain the object.- Overrides:
valueFromRowInternalWithJoin
in classCollectionMapping
- Throws:
DatabaseException
-
buildCopy
public void buildCopy(java.lang.Object copy, java.lang.Object original, CopyGroup group)
INTERNAL: Copy of the attribute of the object. This is NOT used for unit of work but for templatizing an object.- Overrides:
buildCopy
in classCollectionMapping
-
buildElementClone
public java.lang.Object buildElementClone(java.lang.Object element, java.lang.Object parent, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, java.lang.Integer refreshCascade, org.eclipse.persistence.internal.sessions.AbstractSession cloningSession, boolean isExisting, boolean isFromSharedCache)
INTERNAL: Clone the element, if necessary. DirectCollections hold on to objects that do not have Descriptors (e.g. int, String). These objects do not need to be cloned, unless they use a converter - they are immutable.- Overrides:
buildElementClone
in classCollectionMapping
-
buildExpression
public Expression buildExpression(java.lang.Object queryObject, QueryByExamplePolicy policy, Expression expressionBuilder, java.util.Map processedObjects, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: In case Query By Example is used, this method builds and returns an expression that corresponds to a single attribute and it's value.- Overrides:
buildExpression
in classCollectionMapping
-
buildListOrderField
protected void buildListOrderField()
INTERNAL: Verifies listOrderField's table: it must be reference table. Precondition: listOrderField != null.- Overrides:
buildListOrderField
in classCollectionMapping
-
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- Overrides:
cascadePerformRemoveIfRequired
in classCollectionMapping
-
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 classCollectionMapping
-
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- Overrides:
cascadeRegisterNewIfRequired
in classCollectionMapping
-
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, java.util.Set cascadeErrors)
INTERNAL: Cascade discover and persist new objects during commit.- Overrides:
cascadeDiscoverAndPersistUnregisteredNewObjects
in classCollectionMapping
-
clone
public java.lang.Object clone()
INTERNAL: The mapping clones itself to create deep copy.- Overrides:
clone
in classCollectionMapping
-
compareCollectionsForChange
public void compareCollectionsForChange(java.lang.Object oldCollection, java.lang.Object newCollection, org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: This method is used to calculate the differences between two collections.- Overrides:
compareCollectionsForChange
in classCollectionMapping
-
compareListsForChange
public void compareListsForChange(java.util.List oldList, java.util.List newList, org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: This method is used to calculate the differences between two Lists.
-
compareForChange
public org.eclipse.persistence.internal.sessions.ChangeRecord compareForChange(java.lang.Object clone, java.lang.Object backUp, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: This method compares the changes between two direct collections. Comparisons are made on equality not identity.- Overrides:
compareForChange
in classCollectionMapping
- Returns:
- prototype.changeset.ChangeRecord
-
compareObjects
public boolean compareObjects(java.lang.Object firstObject, java.lang.Object secondObject, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Compare the attributes belonging to this mapping for the objects.- Overrides:
compareObjects
in classCollectionMapping
-
compareLists
protected boolean compareLists(java.util.List firstList, java.util.List secondList)
Compare two lists. For equality the order of the elements should be the same. Used only if listOrderField != null
-
convertClassNamesToClasses
public void convertClassNamesToClasses(java.lang.ClassLoader classLoader)
INTERNAL: Convert all the class-name-based settings in this mapping to actual class-based settings This method is implemented by subclasses as necessary.- Overrides:
convertClassNamesToClasses
in classCollectionMapping
- Parameters:
classLoader
-
-
extractKeyFromTargetRow
protected java.lang.Object extractKeyFromTargetRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Extract the source primary key value from the reference direct row. Used for batch reading, most following same order and fields as in the mapping.- Overrides:
extractKeyFromTargetRow
in classCollectionMapping
-
extractBatchKeyFromRow
protected java.lang.Object extractBatchKeyFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Extract the primary key value from the source row. Used for batch reading, most following same order and fields as in the mapping.- Overrides:
extractBatchKeyFromRow
in classForeignReferenceMapping
-
buildBatchCriteria
protected Expression buildBatchCriteria(ExpressionBuilder builder, ObjectLevelReadQuery query)
INTERNAL: Return the selection criteria used to IN batch fetching.- Overrides:
buildBatchCriteria
in classForeignReferenceMapping
-
executeBatchQuery
protected void executeBatchQuery(DatabaseQuery query, org.eclipse.persistence.internal.identitymaps.CacheKey parentCacheKey, java.util.Map referenceDataByKey, org.eclipse.persistence.internal.sessions.AbstractSession session, org.eclipse.persistence.internal.sessions.AbstractRecord translationRow)
INTERNAL: Prepare and execute the batch query and store the results for each source object in a map keyed by the mappings source keys of the source objects.- Overrides:
executeBatchQuery
in classCollectionMapping
-
fixRealObjectReferences
public void fixRealObjectReferences(java.lang.Object object, java.util.Map objectInformation, java.util.Map processedObjects, ObjectLevelReadQuery query, DistributedSession session)
INTERNAL: At this point, we realize we don't have indirection; so we need to replace the reference object(s) with the corresponding object(s) from the remote session. The reference objects for a DirectCollectionMapping are primitives, so they do not need to be replaced.- Overrides:
fixRealObjectReferences
in classCollectionMapping
-
getAttributeClassification
public java.lang.Class getAttributeClassification()
PUBLIC: Some databases do not properly support all of the base data types. For these databases, the base data type must be explicitly specified in the mapping to tell EclipseLink to force the instance variable value to that data type.- Overrides:
getAttributeClassification
in classDatabaseMapping
- Since:
- Java Persistence API 2.0
-
getAttributeClassificationName
public java.lang.String getAttributeClassificationName()
INTERNAL: Return the class name of the attribute type. This is only used by the MW.- Since:
- Java Persistence API 2.0
-
getDeleteQuery
protected ModifyQuery getDeleteQuery()
-
getDeleteNullQuery
protected ModifyQuery getDeleteNullQuery()
-
getDeleteAtIndexQuery
protected ModifyQuery getDeleteAtIndexQuery()
-
getUpdateAtIndexQuery
protected ModifyQuery getUpdateAtIndexQuery()
-
getSelectFields
public java.util.Vector getSelectFields()
INTERNAL: Returns the set of fields that should be selected to build this mapping's value(s). This is used by expressions to determine which fields to include in the select clause for non-object expressions.- Overrides:
getSelectFields
in classDatabaseMapping
-
getSelectTables
public java.util.Vector getSelectTables()
INTERNAL: Returns the table(s) that should be selected to build this mapping's value(s). This is used by expressions to determine which tables to include in the from clause for non-object expressions.- Overrides:
getSelectTables
in classDatabaseMapping
-
getDirectField
public org.eclipse.persistence.internal.helper.DatabaseField getDirectField()
INTERNAL: Return the direct field. This is the field in the direct table to store the values.
-
getDirectFieldName
public java.lang.String getDirectFieldName()
PUBLIC: Returns the name of the field name in the reference table.
-
getInsertQuery
protected DataModifyQuery getInsertQuery()
-
getJoinCriteria
public Expression getJoinCriteria(org.eclipse.persistence.internal.expressions.ObjectExpression context, Expression base)
INTERNAL: Returns the join criteria stored in the mapping selection query. This criteria is used to read reference objects across the tables from the database.- Overrides:
getJoinCriteria
in classCollectionMapping
-
getObjectCorrespondingTo
public java.lang.Object getObjectCorrespondingTo(java.lang.Object object, DistributedSession session, java.util.Map objectDescriptors, java.util.Map processedObjects, ObjectLevelReadQuery query)
INTERNAL: return the object on the client corresponding to the specified object. DirectCollections do not have to worry about maintaining object identity.- Overrides:
getObjectCorrespondingTo
in classCollectionMapping
-
getOrderByExpressions
public java.util.List<Expression> getOrderByExpressions()
PUBLIC: Return the order by expression.
-
getOrderByNormalizedExpressions
public java.util.List<Expression> getOrderByNormalizedExpressions(Expression base)
INTERNAL: Return null if this mapping is used in an order by.- Overrides:
getOrderByNormalizedExpressions
in classForeignReferenceMapping
-
getHistoryPolicy
public HistoryPolicy getHistoryPolicy()
PUBLIC: Allow history support on the reference table.
-
getSelectionQueryContainerPolicy
protected org.eclipse.persistence.internal.queries.ContainerPolicy getSelectionQueryContainerPolicy()
INTERNAL: Get the container policy from the selection query for this mapping.- Overrides:
getSelectionQueryContainerPolicy
in classCollectionMapping
-
getReferenceClass
public java.lang.Class getReferenceClass()
INTERNAL: This cannot be used with direct collection mappings.- Overrides:
getReferenceClass
in classForeignReferenceMapping
-
getReferenceClassName
public java.lang.String getReferenceClassName()
Description copied from class:ForeignReferenceMapping
INTERNAL: Returns the reference class name.- Overrides:
getReferenceClassName
in classForeignReferenceMapping
-
getReferenceDescriptor
public ClassDescriptor getReferenceDescriptor()
INTERNAL: There is none on direct collection.- Overrides:
getReferenceDescriptor
in classForeignReferenceMapping
-
getReferenceKeyFieldNames
public java.util.Vector getReferenceKeyFieldNames()
INTERNAL: Return the reference key field names associated with the mapping. These are in-order with the sourceKeyFieldNames.
-
getReferenceKeyFields
public java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> getReferenceKeyFields()
INTERNAL: Return the reference key fields.
-
getReferenceTable
public org.eclipse.persistence.internal.helper.DatabaseTable getReferenceTable()
INTERNAL: Return the direct table. This is the table to store the values.
-
getReferenceTableName
public java.lang.String getReferenceTableName()
PUBLIC: Returns the name of the reference table
-
getReferenceTableQualifiedName
public java.lang.String getReferenceTableQualifiedName()
PUBLIC: Returns the qualified name of the reference table.
-
getRelationshipPartner
public DatabaseMapping getRelationshipPartner()
INTERNAL: Return the relationshipPartner mapping for this bi-directional mapping. If the relationshipPartner is null then this is a uni-directional mapping. DirectCollectionMapping can not be part of a bi-directional mapping- Overrides:
getRelationshipPartner
in classForeignReferenceMapping
-
getSourceKeyFieldNames
public java.util.Vector getSourceKeyFieldNames()
PUBLIC: Return the source key field names associated with the mapping. These are in-order with the referenceKeyFieldNames.
-
getSourceKeyFields
public java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> getSourceKeyFields()
INTERNAL: Return the source key fields.
-
hasCustomDeleteQuery
protected boolean hasCustomDeleteQuery()
-
hasCustomInsertQuery
protected boolean hasCustomInsertQuery()
-
hasCustomDeleteAtIndexQuery
protected boolean hasCustomDeleteAtIndexQuery()
-
hasCustomUpdateAtIndexQuery
protected boolean hasCustomUpdateAtIndexQuery()
-
hasNestedIdentityReference
public boolean hasNestedIdentityReference()
INTERNAL: Indicates whether the mapping (or at least one of its nested mappings, at any nested depth) references an entity. To return true the mapping (or nested mapping) should be ForeignReferenceMapping with non-null and non-aggregate reference descriptor.- Overrides:
hasNestedIdentityReference
in classForeignReferenceMapping
-
initialize
public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
INTERNAL: Initialize and validate the mapping properties.- Overrides:
initialize
in classCollectionMapping
- Throws:
DescriptorException
-
initializeListOrderField
protected void initializeListOrderField(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Initializes listOrderField. Precondition: listOrderField != null.- Overrides:
initializeListOrderField
in classCollectionMapping
-
initializeDeleteAllQuery
protected void initializeDeleteAllQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
Initialize delete all query. This query is used to delete the collection of objects from the reference table.
-
initializeDeleteQuery
protected void initializeDeleteQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
-
initializeDeleteNullQuery
protected void initializeDeleteNullQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
-
initializeDeleteAtIndexQuery
protected void initializeDeleteAtIndexQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
-
initializeUpdateAtIndexQuery
protected void initializeUpdateAtIndexQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
-
shouldUseListOrderFieldTableExpression
public boolean shouldUseListOrderFieldTableExpression()
INTERNAL: Indicates whether getListOrderFieldExpression method should create field expression on table expression.- Overrides:
shouldUseListOrderFieldTableExpression
in classCollectionMapping
-
createWhereClauseForDeleteQuery
protected Expression createWhereClauseForDeleteQuery(ExpressionBuilder builder)
-
createWhereClauseForDeleteNullQuery
protected Expression createWhereClauseForDeleteNullQuery(ExpressionBuilder builder)
-
initializeDirectField
protected void initializeDirectField(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
The field name on the reference table is initialized and cached.- Throws:
DescriptorException
-
initializeInsertQuery
protected void initializeInsertQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
Initialize insert query. This query is used to insert the collection of objects into the reference table.
-
initializeReferenceDescriptor
protected void initializeReferenceDescriptor(org.eclipse.persistence.internal.sessions.AbstractSession session)
There is no reference descriptor- Overrides:
initializeReferenceDescriptor
in classForeignReferenceMapping
-
initializeReferenceKeys
protected void initializeReferenceKeys(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
The reference keys on the reference table are initialized- Throws:
DescriptorException
-
initializeReferenceTable
protected void initializeReferenceTable(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
Set the table qualifier on the reference table if required- Throws:
DescriptorException
-
initializeSelectionCriteria
protected void initializeSelectionCriteria(org.eclipse.persistence.internal.sessions.AbstractSession session)
-
initializeSelectionQuery
protected void initializeSelectionQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
The selection query is initialized- Overrides:
initializeSelectionQuery
in classForeignReferenceMapping
-
initializeSelectionStatement
protected void initializeSelectionStatement(org.eclipse.persistence.internal.sessions.AbstractSession session)
-
initializeSourceKeys
protected void initializeSourceKeys(org.eclipse.persistence.internal.sessions.AbstractSession session)
The source keys are initialized
-
initializeSourceKeysWithDefaults
protected void initializeSourceKeysWithDefaults(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: If a user does not specify the source key then the primary keys of the source table are used.
-
getAdditionalFieldsBaseExpression
protected Expression getAdditionalFieldsBaseExpression(ReadQuery query)
INTERNAL: Return the base expression to use for adding fields to the query. This is the reference table.- Overrides:
getAdditionalFieldsBaseExpression
in classCollectionMapping
-
isDirectCollectionMapping
public boolean isDirectCollectionMapping()
INTERNAL:- Overrides:
isDirectCollectionMapping
in classDatabaseMapping
-
isElementCollectionMapping
public boolean isElementCollectionMapping()
INTERNAL:- Overrides:
isElementCollectionMapping
in classDatabaseMapping
-
isJoiningSupported
public boolean isJoiningSupported()
INTERNAL: Return if this mapping support joining.- Overrides:
isJoiningSupported
in classForeignReferenceMapping
-
isKeyForSourceSpecified
protected boolean isKeyForSourceSpecified()
INTERNAL: Checks if source and target keys are mentioned by the user or not.
-
isLockableMapping
public boolean isLockableMapping()
INTERNAL: Return whether this mapping should be traversed when we are locking- Overrides:
isLockableMapping
in classForeignReferenceMapping
- Returns:
-
isOwned
public boolean isOwned()
INTERNAL:- Overrides:
isOwned
in classDatabaseMapping
-
iterateOnRealAttributeValue
public void iterateOnRealAttributeValue(org.eclipse.persistence.internal.descriptors.DescriptorIterator iterator, java.lang.Object realAttributeValue)
INTERNAL: Iterate on the attribute value. The value holder has already been processed. PERF: Avoid iteration if not required.- Overrides:
iterateOnRealAttributeValue
in classCollectionMapping
-
iterateOnElement
public void iterateOnElement(org.eclipse.persistence.internal.descriptors.DescriptorIterator iterator, java.lang.Object element)
INTERNAL: Iterate on the specified element.- Overrides:
iterateOnElement
in classCollectionMapping
-
mergeChangesIntoObject
public void mergeChangesIntoObject(java.lang.Object target, org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, java.lang.Object source, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
INTERNAL: Merge changes from the source to the target object. Because this is a collection mapping, values are added to or removed from the collection based on the changeset- Overrides:
mergeChangesIntoObject
in classCollectionMapping
-
mergeAddRemoveChanges
protected void mergeAddRemoveChanges(java.lang.Object valueOfTarget, java.lang.Object delegateTarget, org.eclipse.persistence.internal.sessions.DirectCollectionChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Merge changes by adding and removing from the change record to the target object, and its delegate object if instance of IndirectCollection. It will also reorder the collection if required.
-
mergeIntoObject
public void mergeIntoObject(java.lang.Object target, boolean isTargetUnInitialized, java.lang.Object source, org.eclipse.persistence.internal.sessions.MergeManager mergeManager, org.eclipse.persistence.internal.sessions.AbstractSession targetSession)
INTERNAL: Merge changes from the source to the target object.- Overrides:
mergeIntoObject
in classCollectionMapping
-
performDataModificationEvent
public void performDataModificationEvent(java.lang.Object[] event, org.eclipse.persistence.internal.sessions.AbstractSession session) throws DatabaseException, DescriptorException
INTERNAL: Perform the commit event. This is used in the uow to delay data modifications.- Overrides:
performDataModificationEvent
in classDatabaseMapping
- Throws:
DatabaseException
DescriptorException
-
postCalculateChanges
public void postCalculateChanges(ChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Overridden by mappings that require additional processing of the change record after the record has been calculated.- Overrides:
postCalculateChanges
in classCollectionMapping
-
postInsert
public void postInsert(WriteObjectQuery query) throws DatabaseException
INTERNAL: Insert the private owned object.- Overrides:
postInsert
in classCollectionMapping
- Throws:
DatabaseException
-
getFieldValue
public java.lang.Object getFieldValue(java.lang.Object attributeValue, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Convert the attribute value to a field value. Process any converter if defined.
-
getObjectValue
public java.lang.Object getObjectValue(java.lang.Object fieldValue, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Convert the field value to an attribute value. Process any converter if defined.
-
getFieldsForTranslationInAggregate
public java.util.Vector getFieldsForTranslationInAggregate()
INTERNAL: Return source key fields for translation by an AggregateObjectMapping- Overrides:
getFieldsForTranslationInAggregate
in classForeignReferenceMapping
-
postUpdate
public void postUpdate(WriteObjectQuery writeQuery) throws DatabaseException
INTERNAL: Update private owned part.- Overrides:
postUpdate
in classDatabaseMapping
- Throws:
DatabaseException
-
postUpdateWithChangeSet
protected void postUpdateWithChangeSet(WriteObjectQuery writeQuery) throws DatabaseException
INTERNAL: Update private owned part.- Throws:
DatabaseException
-
postUpdateWithChangeSetListOrder
protected void postUpdateWithChangeSetListOrder(WriteObjectQuery writeQuery) throws DatabaseException
INTERNAL: Update private owned part.- Throws:
DatabaseException
-
preDelete
public void preDelete(DeleteObjectQuery query) throws DatabaseException
INTERNAL: Delete private owned part. Which is a collection of objects from the reference table.- Overrides:
preDelete
in classDatabaseMapping
- Throws:
DatabaseException
-
prepareTranslationRow
protected void prepareTranslationRow(org.eclipse.persistence.internal.sessions.AbstractRecord translationRow, java.lang.Object object, ClassDescriptor descriptor, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: The translation row may require additional fields than the primary key if the mapping in not on the primary key.- Overrides:
prepareTranslationRow
in classCollectionMapping
-
initOrRebuildSelectQuery
protected void initOrRebuildSelectQuery()
INTERNAL: Used by DirectMapMapping to rebuild select query.
-
recordPrivateOwnedRemovals
public void recordPrivateOwnedRemovals(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Overridden by mappings that require additional processing of the change record after the record has been calculated.- Overrides:
recordPrivateOwnedRemovals
in classCollectionMapping
-
remoteInitialization
public void remoteInitialization(DistributedSession session)
INTERNAL: Once descriptors are serialized to the remote session. All its mappings and reference descriptors are traversed. Usually mappings are initialized and serialized reference descriptors are replaced with local descriptors if they already exist on the remote session.- Overrides:
remoteInitialization
in classForeignReferenceMapping
-
replaceValueHoldersIn
public java.util.Map replaceValueHoldersIn(java.lang.Object object, org.eclipse.persistence.internal.sessions.remote.RemoteSessionController controller)
INTERNAL: replace the value holders in the specified reference object(s)- Overrides:
replaceValueHoldersIn
in classCollectionMapping
-
setAttributeClassification
public void setAttributeClassification(java.lang.Class attributeClassification)
PUBLIC: Some databases do not properly support all of the base data types. For these databases, the base data type must be explicitly specified in the mapping to tell EclipseLink to force the instance variable value to that data type.- Since:
- Java Persistence API 2.0 Migrated from AbstractDirectMapping
-
setAttributeClassificationName
public void setAttributeClassificationName(java.lang.String attributeClassificationName)
INTERNAL: Set the name of the class for MW usage.- Since:
- Java Persistence API 2.0 Migrated from AbstractDirectMapping
-
setDeleteQuery
protected void setDeleteQuery(ModifyQuery query)
-
setDeleteSQLString
public void setDeleteSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's delete SQL string. This allows the user to override the SQL generated by TopLink, with there own SQL or procedure call. The arguments are translated from the fields of the source row, through replacing the field names marked by '#' with the values for those fields. This SQL is responsible for doing the deletion required by the mapping, such as deletion from join table for M-M. Example, 'delete from RESPONS where EMP_ID = #EMP_ID and DESCRIP = #DESCRIP'.
-
setContainerPolicy
public void setContainerPolicy(org.eclipse.persistence.internal.queries.ContainerPolicy containerPolicy)
ADVANCED: Configure the mapping to use a container policy. The policy manages the access to the collection.- Specified by:
setContainerPolicy
in interfaceContainerMapping
- Overrides:
setContainerPolicy
in classCollectionMapping
-
setCustomDeleteQuery
public void setCustomDeleteQuery(ModifyQuery query)
PUBLIC: The default delete query for this mapping can be overridden by specifying the new query. This query is responsible for doing the deletion required by the mapping, such as deletion from join table for M-M. The query should delete a specific row from the DirectCollectionTable bases on the DirectField.
-
setCustomDeleteAtIndexQuery
public void setCustomDeleteAtIndexQuery(ModifyQuery query)
PUBLIC: The default delete by index query for this mapping can be overridden by specifying the new query. This query used (only in case listOrderField != null) to delete object with particular orderFieldValue.
-
setCustomInsertQuery
public void setCustomInsertQuery(DataModifyQuery query)
PUBLIC: The default insert query for mapping can be overridden by specifying the new query. This query inserts the row into the direct table.
-
setCustomUpdateAtIndexQuery
public void setCustomUpdateAtIndexQuery(ModifyQuery query)
PUBLIC: The default delete by index query for this mapping can be overridden by specifying the new query. This query used (only in case listOrderField != null) to update orderFieldValue of object with particular orderFieldValue.
-
setDirectField
public void setDirectField(org.eclipse.persistence.internal.helper.DatabaseField field)
PUBLIC: Set the direct field in the reference table. This is the field that the primitive data value is stored in.
-
setDirectFieldClassification
public void setDirectFieldClassification(java.lang.Class fieldType)
ADVANCED: Set the class type of the field value. This can be used if field value differs from the object value, has specific typing requirements such as usage of java.sql.Blob or NChar. This must be called after the field name has been set.
-
setDirectFieldClassificationName
public void setDirectFieldClassificationName(java.lang.String className)
ADVANCED: Set the class type of the field value. This can be used if field value differs from the object value, has specific typing requirements such as usage of java.sql.Blob or NChar. This must be called after the field name has been set.
-
setDirectFieldName
public void setDirectFieldName(java.lang.String fieldName)
PUBLIC: Set the direct field name in the reference table. This is the field that the primitive data value is stored in.
-
setHasCustomDeleteQuery
protected void setHasCustomDeleteQuery(boolean bool)
-
setHasCustomInsertQuery
protected void setHasCustomInsertQuery(boolean bool)
-
setInsertQuery
protected void setInsertQuery(DataModifyQuery insertQuery)
-
setInsertSQLString
public void setInsertSQLString(java.lang.String sqlString)
PUBLIC: Set the receiver's insert SQL string. This allows the user to override the SQL generated by TopLink, with there own SQL or procedure call. The arguments are translated from the fields of the source row, through replacing the field names marked by '#' with the values for those fields. This is used to insert an entry into the direct table.Example, 'insert into RESPONS (EMP_ID, RES_DESC) values (#EMP_ID, #RES_DESC)'.
-
setReferenceClass
public void setReferenceClass(java.lang.Class referenceClass)
INTERNAL: This cannot be used with direct collection mappings.- Overrides:
setReferenceClass
in classForeignReferenceMapping
-
setReferenceClassName
public void setReferenceClassName(java.lang.String referenceClassName)
Description copied from class:ForeignReferenceMapping
INTERNAL: Used by MW.- Overrides:
setReferenceClassName
in classForeignReferenceMapping
-
setReferenceKeyFieldName
public void setReferenceKeyFieldName(java.lang.String fieldName)
PUBLIC: Set the name of the reference key field. This is the foreign key field in the direct table referencing the primary key of the source object. This method is used if the reference key consists of only a single field.
-
setReferenceKeyFieldNames
public void setReferenceKeyFieldNames(java.util.Vector fieldNames)
INTERNAL: Set the reference key field names associated with the mapping. These must be in-order with the sourceKeyFieldNames.
-
setReferenceKeyFields
public void setReferenceKeyFields(java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> aVector)
INTERNAL: Set the reference fields.
-
setReferenceTable
public void setReferenceTable(org.eclipse.persistence.internal.helper.DatabaseTable table)
INTERNAL: Set the reference table.
-
setSelectionCriteria
public void setSelectionCriteria(Expression anExpression)
PUBLIC: Sets the selection criteria to be used as a where clause to read reference objects. This criteria is automatically generated by the TopLink if not explicitly specified by the user.- Overrides:
setSelectionCriteria
in classForeignReferenceMapping
-
setReferenceTableName
public void setReferenceTableName(java.lang.String tableName)
PUBLIC: Set the reference table name.
-
setSelectionQueryContainerPolicy
protected void setSelectionQueryContainerPolicy(org.eclipse.persistence.internal.queries.ContainerPolicy containerPolicy)
INTERNAL: Set the container policy on the selection query for this mapping.- Overrides:
setSelectionQueryContainerPolicy
in classCollectionMapping
-
setHistoryPolicy
public void setHistoryPolicy(HistoryPolicy policy)
PUBLIC: Support history on the reference table.
-
setSessionName
public void setSessionName(java.lang.String name)
PUBLIC: Set the name of the session to execute the mapping's queries under. This can be used by the session broker to override the default session to be used for the target class.- Overrides:
setSessionName
in classCollectionMapping
-
setSourceKeyFieldNames
public void setSourceKeyFieldNames(java.util.Vector fieldNames)
INTERNAL: Set the source key field names associated with the mapping. These must be in-order with the referenceKeyFieldNames.
-
setSourceKeyFields
public void setSourceKeyFields(java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> sourceKeyFields)
INTERNAL: Set the source fields.
-
collectQueryParameters
public void collectQueryParameters(java.util.Set<org.eclipse.persistence.internal.helper.DatabaseField> cacheFields)
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 classCollectionMapping
-
calculateDeferredChanges
public void calculateDeferredChanges(org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Used by AttributeLevelChangeTracking to update a changeRecord with calculated changes as apposed to detected changes. If an attribute can not be change tracked it's changes can be detected through this process.- Overrides:
calculateDeferredChanges
in classCollectionMapping
-
simpleAddToCollectionChangeRecord
public void simpleAddToCollectionChangeRecord(java.lang.Object referenceKey, java.lang.Object objectToAdd, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session)
ADVANCED: This method is used to have an object add to a collection once the changeSet is applied The referenceKey parameter should only be used for direct Maps.- Overrides:
simpleAddToCollectionChangeRecord
in classCollectionMapping
-
simpleAddToCollectionChangeRecord
protected void simpleAddToCollectionChangeRecord(java.lang.Object objectToAdd, java.lang.Integer index, boolean isSet, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session, boolean isChangeApplied)
-
simpleRemoveFromCollectionChangeRecord
public void simpleRemoveFromCollectionChangeRecord(java.lang.Object referenceKey, java.lang.Object objectToRemove, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session)
ADVANCED: This method is used to have an object removed from a collection once the changeSet is applied The referenceKey parameter should only be used for direct Maps.- Overrides:
simpleRemoveFromCollectionChangeRecord
in classCollectionMapping
-
simpleRemoveFromCollectionChangeRecord
protected void simpleRemoveFromCollectionChangeRecord(java.lang.Object objectToRemove, java.lang.Integer index, boolean isSet, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.AbstractSession session, boolean isChangeApplied)
-
updateChangeRecord
public void updateChangeRecord(java.lang.Object clone, java.lang.Object newValue, java.lang.Object oldValue, org.eclipse.persistence.internal.sessions.ObjectChangeSet objectChangeSet, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Either create a new change record or update with the new value. This is used by attribute change tracking. Specifically in a collection mapping this will be called when the customer Set a new collection. In this case we will need to mark the change record with the new and the old versions of the collection. And mark the ObjectChangeSet with the attribute name then when the changes are calculated force a compare on the collections to determine changes.- Overrides:
updateChangeRecord
in classCollectionMapping
-
updateCollectionChangeRecord
public void updateCollectionChangeRecord(CollectionChangeEvent event, org.eclipse.persistence.internal.sessions.ObjectChangeSet changeSet, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Add or removes a new value and its change set to the collection change record based on the event passed in. This is used by attribute change tracking.- Overrides:
updateCollectionChangeRecord
in classCollectionMapping
-
useMapClass
public void useMapClass(java.lang.Class concreteClass, java.lang.String methodName)
PUBLIC: It is illegal to use a Map as the container of a DirectCollectionMapping. Only Collection containers are supported for DirectCollectionMappings.- Specified by:
useMapClass
in interfaceContainerMapping
- Overrides:
useMapClass
in classCollectionMapping
- See Also:
DirectMapMapping
-
valueFromRow
public java.lang.Object valueFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, org.eclipse.persistence.internal.sessions.AbstractSession session, boolean isTargetProtected, java.lang.Boolean[] wasCacheUsed) throws DatabaseException
INTERNAL: Return the value of the reference attribute or a value holder. Check whether the mapping's attribute should be optimized through batch and joining. Overridden to support flashback/historical queries.- Overrides:
valueFromRow
in classForeignReferenceMapping
- Throws:
DatabaseException
-
verifyDelete
public boolean verifyDelete(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractSession session) throws DatabaseException
INTERNAL: Checks if object is deleted from the database or not.- Overrides:
verifyDelete
in classCollectionMapping
- Throws:
DatabaseException
-
isCandidateForPrivateOwnedRemoval
public boolean isCandidateForPrivateOwnedRemoval()
INTERNAL: DirectCollectionMapping contents should not be considered for addition to the UnitOfWork private owned objects list for removal.- Overrides:
isCandidateForPrivateOwnedRemoval
in classDatabaseMapping
-
isCascadedLockingSupported
public boolean isCascadedLockingSupported()
INTERNAL Return true if this mapping supports cascaded version optimistic locking.- Overrides:
isCascadedLockingSupported
in classDatabaseMapping
-
-