|
EclipseLink1.0 - 20080707 API Reference | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.eclipse.persistence.mappings.DatabaseMapping
org.eclipse.persistence.mappings.ForeignReferenceMapping
org.eclipse.persistence.mappings.CollectionMapping
org.eclipse.persistence.mappings.DirectCollectionMapping
public class DirectCollectionMapping
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.
Converter,
ObjectTypeConverter,
TypeConversionConverter,
SerializedObjectConverter,
Serialized Form| Field Summary | |
|---|---|
protected ModifyQuery |
changeSetDeleteQuery
Used for deletion when ChangeSets are used |
protected static java.lang.String |
Delete
Used for data modification events. |
protected static java.lang.String |
DeleteAll
|
protected org.eclipse.persistence.internal.helper.DatabaseField |
directField
The direct field name is converted and stored |
protected boolean |
hasCustomDeleteQuery
|
protected boolean |
hasCustomInsertQuery
|
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.Vector<org.eclipse.persistence.internal.helper.DatabaseField> |
referenceKeyFields
|
protected org.eclipse.persistence.internal.helper.DatabaseTable |
referenceTable
Stores the reference table |
protected java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> |
sourceKeyFields
|
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 |
|---|
containerPolicy, deleteAllQuery, hasCustomDeleteAllQuery, hasOrderBy |
| Fields inherited from class org.eclipse.persistence.mappings.ForeignReferenceMapping |
|---|
cascadeMerge, cascadePersist, cascadeRefresh, cascadeRemove, hasCustomSelectionQuery, indirectionPolicy, INNER_JOIN, isPrivateOwned, joinFetch, NONE, OUTER_JOIN, referenceClass, referenceClassName, referenceDescriptor, relationshipPartner, relationshipPartnerAttributeName, selectionQuery, tempInitSession, usesBatchReading |
| Fields inherited from class org.eclipse.persistence.mappings.DatabaseMapping |
|---|
attributeAccessor, attributeName, descriptor, fields, isLazy, isOptional, isReadOnly, isRemotelyInitialized, NO_FIELDS, NO_WEIGHT, primaryKeyMapping, properties, weight, WEIGHT_1 |
| Constructor Summary | |
|---|---|
DirectCollectionMapping()
PUBLIC: Default constructor. |
|
| Method Summary | |
|---|---|
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. |
void |
addToCollectionChangeRecord(java.lang.Object newKey,
java.lang.Object newValue,
org.eclipse.persistence.internal.sessions.ObjectChangeSet objectChangeSet,
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Add a new value and its change set to the collection change record. |
void |
buildCopy(java.lang.Object copy,
java.lang.Object original,
ObjectCopyingPolicy policy)
INTERNAL: Copy of the attribute of the object. |
protected java.lang.Object |
buildElementClone(java.lang.Object element,
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork,
boolean isExisting)
INTERNAL: Clone the element, if necessary. |
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)
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 cascade |
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 |
java.lang.Object |
clone()
INTERNAL: The mapping clones itself to create deep copy. |
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. |
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. |
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 java.util.Vector |
extractKeyFromReferenceRow(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. |
protected java.util.Vector |
extractPrimaryKeyFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row,
org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Extract the primary key value from the source row. |
java.lang.Object |
extractResultFromBatchQuery(DatabaseQuery query,
org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow,
org.eclipse.persistence.internal.sessions.AbstractSession session,
org.eclipse.persistence.internal.sessions.AbstractRecord argumentRow)
INTERNAL: Extract the value from the batch optimized query. |
void |
fixRealObjectReferences(java.lang.Object object,
java.util.Map objectInformation,
java.util.Map processedObjects,
ObjectLevelReadQuery query,
RemoteSession 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 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. |
HistoryPolicy |
getHistoryPolicy()
PUBLIC: |
protected DataModifyQuery |
getInsertQuery()
|
Expression |
getJoinCriteria(org.eclipse.persistence.internal.expressions.QueryKeyExpression exp)
INTERNAL: Returns the join criteria stored in the mapping selection query. |
java.lang.Object |
getObjectCorrespondingTo(java.lang.Object object,
RemoteSession 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.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 table |
java.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). |
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. |
Converter |
getValueConverter()
PUBLIC: Return the converter on the mapping. |
protected boolean |
hasCustomDeleteQuery()
|
protected boolean |
hasCustomInsertQuery()
|
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 |
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 |
initializeReferenceDescriptor(org.eclipse.persistence.internal.sessions.AbstractSession session)
There is no reference descriptor |
protected void |
initializeReferenceKeys(org.eclipse.persistence.internal.sessions.AbstractSession session)
The reference keys on the reference table are initalized |
protected void |
initializeReferenceTable(org.eclipse.persistence.internal.sessions.AbstractSession session)
Set the table qualifier on the reference table if required |
protected void |
initializeSelectionCriteria(org.eclipse.persistence.internal.sessions.AbstractSession session)
|
protected void |
initializeSelectionQuery(org.eclipse.persistence.internal.sessions.AbstractSession session)
The selection query is initialized |
protected void |
initializeSelectionStatement(org.eclipse.persistence.internal.sessions.AbstractSession session)
|
protected void |
initializeSourceKeys(org.eclipse.persistence.internal.sessions.AbstractSession session)
The source keys are initalized |
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. |
boolean |
isCascadedLockingSupported()
INTERNAL Return true if this mapping supports cascaded version optimistic locking. |
boolean |
isChangeTrackingSupported(Project project)
INTERNAL: Return if this mapping supports change tracking. |
boolean |
isDirectCollectionMapping()
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 |
isPrivateOwned()
INTERNAL: Return true if referenced objects are provately owned else false. |
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. |
void |
mergeChangesIntoObject(java.lang.Object target,
org.eclipse.persistence.internal.sessions.ChangeRecord changeRecord,
java.lang.Object source,
org.eclipse.persistence.internal.sessions.MergeManager mergeManager)
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)
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 |
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. |
void |
preDelete(DeleteObjectQuery query)
INTERNAL: Delete private owned part. |
ReadQuery |
prepareNestedBatchQuery(ReadAllQuery 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,
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 |
remoteInitialization(DistributedSession session)
INTERNAL: Once descriptors are serialized to the remote session. |
void |
removeFromCollectionChangeRecord(java.lang.Object newKey,
java.lang.Object newValue,
org.eclipse.persistence.internal.sessions.ObjectChangeSet objectChangeSet,
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow)
INTERNAL: Remove a value and its change set from the collection change record. |
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 |
setContainerPolicy(org.eclipse.persistence.internal.queries.ContainerPolicy containerPolicy)
ADVANCED: Configure the mapping to use a container policy. |
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. |
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 |
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: |
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. |
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. |
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. |
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 |
useCollectionClass(java.lang.Class concreteClass)
PUBLIC: Configure the mapping to use an instance of the specified container class to hold the target objects. |
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.sessions.AbstractSession session)
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.sessions.AbstractSession executionSession)
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 java.lang.Object |
|---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
protected static final java.lang.String Delete
protected static final java.lang.String Insert
protected static final java.lang.String DeleteAll
protected Converter valueConverter
protected java.lang.String valueConverterClassName
protected transient org.eclipse.persistence.internal.helper.DatabaseTable referenceTable
protected transient org.eclipse.persistence.internal.helper.DatabaseField directField
protected transient java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> sourceKeyFields
protected transient java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> referenceKeyFields
protected transient DataModifyQuery insertQuery