EclipseLink 1.1.4, build 'v20100812-r7860' API Reference

org.eclipse.persistence.mappings
Class ObjectReferenceMapping

java.lang.Object
  extended by org.eclipse.persistence.mappings.DatabaseMapping
      extended by org.eclipse.persistence.mappings.ForeignReferenceMapping
          extended by org.eclipse.persistence.mappings.ObjectReferenceMapping
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable
Direct Known Subclasses:
EISOneToOneMapping, OneToOneMapping, ReferenceMapping, VariableOneToOneMapping

public abstract class ObjectReferenceMapping
extends ForeignReferenceMapping

Purpose: Abstract class for 1:1, variable 1:1 and reference mappings

See Also:
Serialized Form

Field Summary
protected  java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> foreignKeyFields
          Keeps track of which fields are foreign keys on a per field basis (can have mixed foreign key relationships).
protected  boolean isForeignKeyRelationship
          Keeps track if any of the fields are foreign keys.
 
Fields inherited from class org.eclipse.persistence.mappings.ForeignReferenceMapping
cascadeMerge, cascadePersist, cascadeRefresh, cascadeRemove, forceInitializationOfSelectionCriteria, hasCustomSelectionQuery, indirectionPolicy, INNER_JOIN, isPrivateOwned, joinFetch, NONE, OUTER_JOIN, referenceClass, referenceClassName, referenceDescriptor, relationshipPartner, relationshipPartnerAttributeName, requiresTransientWeavedFields, selectionQuery, tempInitSession, usesBatchReading
 
Fields inherited from class org.eclipse.persistence.mappings.DatabaseMapping
attributeAccessor, attributeName, descriptor, fields, isLazy, isOptional, isPrimaryKeyMapping, isReadOnly, isRemotelyInitialized, NO_FIELDS, NO_WEIGHT, properties, weight, WEIGHT_1
 
Constructor Summary
protected ObjectReferenceMapping()
           
 
Method Summary
 java.lang.Object buildBackupCloneForPartObject(java.lang.Object attributeValue, java.lang.Object clone, java.lang.Object backup, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork)
          INTERNAL: Used during building the backup shallow copy to copy the vector without re-registering the target objects.
 org.eclipse.persistence.internal.sessions.ChangeRecord buildChangeRecord(java.lang.Object clone, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Directly build a change record without comparison
 java.lang.Object buildCloneForPartObject(java.lang.Object attributeValue, java.lang.Object original, java.lang.Object clone, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork, boolean isExisting)
          INTERNAL: Require for cloning, the part must be cloned.
 void buildCopy(java.lang.Object copy, java.lang.Object original, ObjectCopyingPolicy policy)
          INTERNAL: Copy of the attribute of the object.
 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 generates an expression from a attribute value pair.
 java.lang.Object[] buildReferencesPKList(java.lang.Object entity, java.lang.Object attribute, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: This method will access the target relationship and create a list of PKs of the target entities.
 java.util.Collection buildTargetInterfaces(java.lang.Class aClass, java.util.Collection targetInterfacesCol)
          INTERNAL: Build a list of all the interfaces and super interfaces for a given class.
protected  boolean cacheKeysAreEqual(org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey1, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey2)
          INTERNAL:
 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 registerNew for Create through mappings that require the cascade
 void cascadePerformRemovePrivateOwnedObjectFromChangeSetIfRequired(java.lang.Object object, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.util.Map visitedObjects)
          INTERNAL: Cascade removal of orphaned private owned objects from the UnitOfWorkChangeSet
 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
protected  java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> collectFields()
          INTERNAL: Return all the fields populated by this mapping, these are foreign keys only.
 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: Return an ObjectReferenceChangeRecord describing the change, or null if no change.
protected  boolean compareObjectsWithoutPrivateOwned(java.lang.Object firstObject, java.lang.Object secondObject, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Compare the references of the two objects are the same, not the objects themselves.
protected  boolean compareObjectsWithPrivateOwned(java.lang.Object firstObject, java.lang.Object secondObject, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Compare the references of the two objects are the same, and the objects themselves are the same.
 org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder createUnitOfWorkValueHolder(ValueHolderInterface attributeValue, java.lang.Object original, java.lang.Object clone, org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork, boolean buildDirectlyFromRow)
          INTERNAL: Builder the unit of work value holder.
 org.eclipse.persistence.internal.sessions.AbstractRecord extractPrimaryKeyRowForSourceObject(java.lang.Object domainObject, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Extract the reference pk for rvh usage in remote model.
 java.util.Vector extractPrimaryKeysForReferenceObject(java.lang.Object domainObject, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Extract the reference pk for rvh usage in remote model.
 java.util.Vector extractPrimaryKeysForReferenceObjectFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row)
          INTERNAL: Return the primary key for the reference object (i.e. the object object referenced by domainObject and specified by mapping).
 java.util.Vector extractPrimaryKeysFromRealReferenceObject(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Extract the reference pk for rvh usage in remote model.
 void fixRealObjectReferences(java.lang.Object object, java.util.Map objectDescriptors, java.util.Map processedObjects, ObjectLevelReadQuery query, RemoteSession session)
          INTERNAL: We are not using a remote valueholder so we need to replace the reference object(s) with the corresponding object(s) from the remote session.
 ClassDescriptor getDescriptorForTarget(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Return a descriptor for the target of this mapping
 java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> getForeignKeyFields()
          INTERNAL: Returns the foreign key names associated with the mapping.
protected  java.util.Vector getPrimaryKeyForObject(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL:
 java.lang.Object getRealAttributeValueFromAttribute(java.lang.Object attributeValue, java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Object reference must unwrap the reference object if required.
 boolean hasConstraintDependency()
          INTERNAL: The returns if the mapping has any constraint dependencies, such as foreign keys and join tables.
protected  void insert(WriteObjectQuery query)
          INTERNAL: Insert privately owned parts
 org.eclipse.persistence.internal.sessions.ObjectReferenceChangeRecord internalBuildChangeRecord(java.lang.Object newValue, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Directly build a change record based on the newValue without comparison
 boolean isChangeTrackingSupported(Project project)
          INTERNAL: Return if this mapping supports change tracking.
 boolean isForeignKeyRelationship()
          INTERNAL: Return if the 1-1 mapping has a foreign key dependency to its target.
 boolean isObjectReferenceMapping()
          INTERNAL: Related mapping should implement this method to return true.
 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 postDelete(DeleteObjectQuery query)
          INTERNAL: Delete privately owned parts
 void postInsert(WriteObjectQuery query)
          INTERNAL: Insert privately owned parts
 void postUpdate(WriteObjectQuery query)
          INTERNAL: Update privately owned parts
 void preDelete(DeleteObjectQuery query)
          INTERNAL: Delete privately owned parts
 void preInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Initialize the state of mapping.
 void preInsert(WriteObjectQuery query)
          INTERNAL: Insert privately owned parts
 void preUpdate(WriteObjectQuery query)
          INTERNAL: Update privately owned parts
protected  java.lang.Object readPrivateOwnedForObject(ObjectLevelModifyQuery modifyQuery)
          INTERNAL: Reads the private owned object.
protected  void setForeignKeyFields(java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> foreignKeyFields)
          INTERNAL: Set the foreign key fields associated with the mapping.
 void setIsForeignKeyRelationship(boolean isForeignKeyRelationship)
          INTERNAL: Set if the 1-1 mapping has a foreign key dependency to its target.
 void setNewValueInChangeRecord(java.lang.Object newValue, org.eclipse.persistence.internal.sessions.ObjectReferenceChangeRecord changeRecord, org.eclipse.persistence.internal.sessions.ObjectChangeSet owner, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Set the newValue in the change record
protected  void update(WriteObjectQuery query)
          INTERNAL: Update the private owned part.
 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 the change record with the new value.
 void useProxyIndirection()
          PUBLIC: Set this mapping to use Proxy Indirection.
 void useProxyIndirection(java.lang.Class targetInterface)
          PUBLIC: Set this mapping to use Proxy Indirection.
 void useProxyIndirection(java.lang.Class[] targetInterfaces)
          PUBLIC: Set this mapping to use Proxy Indirection.
 java.lang.Object valueFromPKList(java.lang.Object[] pks, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: This method is used to load a relationship from a list of PKs.
 boolean verifyDelete(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: To verify if the specified object is deleted or not.
 void writeFromObjectIntoRowForUpdate(WriteObjectQuery query, org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow)
          INTERNAL: Get a value from the object and set that in the respective field of the row.
 void writeFromObjectIntoRowForWhereClause(ObjectLevelModifyQuery query, org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow)
          INTERNAL: Get a value from the object and set that in the respective field of the row.
 
Methods inherited from class org.eclipse.persistence.mappings.ForeignReferenceMapping
batchedValueFromRow, buildBackupClone, buildClone, buildCloneFromRow, clone, compareObjects, convertClassNamesToClasses, dontDoMerge, dontUseBatchReading, dontUseIndirection, extractResultFromBatchQuery, fixObjectReferences, getAttributeValueFromObject, getAttributeValueWithClonedValueHolders, getBatchReadObjects, getIndirectionPolicy, getJoinCriteria, getJoinFetch, getObjectCorrespondingTo, getReferenceClass, getReferenceClassName, getReferenceDescriptor, getRelationshipPartner, getRelationshipPartnerAttributeName, getSelectionCriteria, getSelectionQuery, getTempSession, getValueFromRemoteValueHolder, hasCustomSelectionQuery, initialize, initializeReferenceDescriptor, initializeSelectionQuery, instantiateAttribute, isAttributeValueInstantiated, isCascadeMerge, isCascadePersist, isCascadeRefresh, isCascadeRemove, isForeignReferenceMapping, isInnerJoinFetched, isJoinFetched, isJoiningSupported, isLazy, isOuterJoinFetched, isPrivateOwned, iterate, mergeRemoteValueHolder, postPrepareNestedBatchQuery, prepareHistoricalQuery, prepareNestedBatchQuery, prepareNestedJoinQueryClone, prepareNestedJoins, privateOwnedRelationship, remoteInitialization, replaceValueHoldersIn, requiresTransientWeavedFields, setBatchReadObjects, setCascadeAll, setCascadeMerge, setCascadePersist, setCascadeRefresh, setCascadeRemove, setCustomSelectionQuery, setForceInitializationOfSelectionCriteria, setHasCustomSelectionQuery, setIndirectionPolicy, setIsPrivateOwned, setJoinFetch, setRealAttributeValueInObject, setReferenceClass, setReferenceClassName, setReferenceDescriptor, setRelationshipPartner, setRelationshipPartnerAttributeName, setRequiresTransientWeavedFields, setSelectionCall, setSelectionCriteria, setSelectionQuery, setSelectionSQLString, setTempSession, setUsesBatchReading, setUsesIndirection, shouldForceInitializationOfSelectionCriteria, shouldInitializeSelectionCriteria, shouldMergeCascadeParts, shouldMergeCascadeReference, shouldObjectModifyCascadeToParts, shouldUseBatchReading, shouldUseValueFromRowWithJoin, trimRowForJoin, trimRowForJoin, useBasicIndirection, useBatchReading, useContainerIndirection, useInnerJoinFetch, useOuterJoinFetch, usesIndirection, useWeavedIndirection, validateBeforeInitialization, valueFromRow, valueFromRowInternal, valueFromRowInternalWithJoin
 
Methods inherited from class org.eclipse.persistence.mappings.DatabaseMapping
addToCollectionChangeRecord, buildObjectJoinExpression, buildObjectJoinExpression, buildShallowOriginalFromRow, calculateDeferredChanges, cascadeMerge, cloneFields, extractNestedExpressions, getAttributeAccessor, getAttributeClassification, getAttributeName, getContainerPolicy, getDescriptor, getField, getFieldClassification, getFields, getGetMethodName, getProperties, getProperty, getRealAttributeValueFromObject, getRealCollectionAttributeValueFromObject, getSelectFields, getSelectTables, getSetMethodName, getWeight, hasDependency, hasInverseConstraintDependency, hasRootExpressionThatShouldUseOuterJoin, isAbstractCompositeCollectionMapping, isAbstractCompositeDirectCollectionMapping, isAbstractCompositeObjectMapping, isAbstractDirectMapping, isAggregateCollectionMapping, isAggregateMapping, isAggregateObjectMapping, isCandidateForPrivateOwnedRemoval, isCascadedLockingSupported, isCloningRequired, isCollectionMapping, isDatabaseMapping, isDirectCollectionMapping, isDirectMapMapping, isDirectToFieldMapping, isDirectToXMLTypeMapping, isEISMapping, isManyToManyMapping, isNestedTableMapping, isOneToManyMapping, isOneToOneMapping, isOptional, isPrimaryKeyMapping, isReadOnly, isReferenceMapping, isRelationalMapping, isRemotelyInitialized, isStructureMapping, isTransformationMapping, isUnidirectionalOneToManyMapping, isUsingMethodAccess, isVariableOneToOneMapping, isWriteOnly, isXMLMapping, performDataModificationEvent, postCalculateChanges, postCalculateChangesOnDeleted, postInitialize, prepareCascadeLockingPolicy, readFromResultSetIntoObject, readFromRowIntoObject, readOnly, readWrite, rehashFieldDependancies, remotelyInitialized, removeFromCollectionChangeRecord, setAttributeAccessor, setAttributeName, setAttributeValueInObject, setChangeListener, setDescriptor, setFields, setGetMethodName, setIsLazy, setIsOptional, setIsPrimaryKeyMapping, setIsReadOnly, setProperties, setProperty, setSetMethodName, setWeight, simpleAddToCollectionChangeRecord, simpleRemoveFromCollectionChangeRecord, toString, updateCollectionChangeRecord, validateAfterInitialization, valueFromObject, valueFromResultSet, valueFromRow, writeFromAttributeIntoRow, writeFromObjectIntoRow, writeFromObjectIntoRowForShallowInsert, writeFromObjectIntoRowForShallowInsertWithChangeRecord, writeFromObjectIntoRowWithChangeRecord, writeInsertFieldsIntoRow, writeUpdateFieldsIntoRow
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

isForeignKeyRelationship

protected boolean isForeignKeyRelationship
Keeps track if any of the fields are foreign keys.


foreignKeyFields

protected java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> foreignKeyFields
Keeps track of which fields are foreign keys on a per field basis (can have mixed foreign key relationships).

Constructor Detail

ObjectReferenceMapping

protected ObjectReferenceMapping()
Method Detail

buildBackupCloneForPartObject

public java.lang.Object buildBackupCloneForPartObject(java.lang.Object attributeValue,
                                                      java.lang.Object clone,
                                                      java.lang.Object backup,
                                                      org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork)
INTERNAL: Used during building the backup shallow copy to copy the vector without re-registering the target objects. For 1-1 or ref the reference is from the clone so it is already registered.

Specified by:
buildBackupCloneForPartObject in class ForeignReferenceMapping

buildCloneForPartObject

public java.lang.Object buildCloneForPartObject(java.lang.Object attributeValue,
                                                java.lang.Object original,
                                                java.lang.Object clone,
                                                org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork,
                                                boolean isExisting)
INTERNAL: Require for cloning, the part must be cloned. Ignore the objects, use the attribute value.

Specified by:
buildCloneForPartObject in class ForeignReferenceMapping

buildCopy

public void buildCopy(java.lang.Object copy,
                      java.lang.Object original,
                      ObjectCopyingPolicy policy)
INTERNAL: Copy of the attribute of the object. This is NOT used for unit of work but for templatizing an object.

Overrides:
buildCopy in class DatabaseMapping

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 generates an expression from a attribute value pair. Since this is a ObjectReference mapping, a recursive call is made to the buildExpressionFromExample method of ObjectBuilder.

Overrides:
buildExpression in class DatabaseMapping

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: Return an ObjectReferenceChangeRecord describing the change, or null if no change. Used to compute changes for deferred change tracking.

Specified by:
compareForChange in class DatabaseMapping
Returns:
prototype.changeset.ChangeRecord

internalBuildChangeRecord

public org.eclipse.persistence.internal.sessions.ObjectReferenceChangeRecord internalBuildChangeRecord(java.lang.Object newValue,
                                                                                                       org.eclipse.persistence.internal.sessions.ObjectChangeSet owner,
                                                                                                       org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Directly build a change record based on the newValue without comparison


setNewValueInChangeRecord

public void setNewValueInChangeRecord(java.lang.Object newValue,
                                      org.eclipse.persistence.internal.sessions.ObjectReferenceChangeRecord changeRecord,
                                      org.eclipse.persistence.internal.sessions.ObjectChangeSet owner,
                                      org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Set the newValue in the change record


compareObjectsWithoutPrivateOwned

protected boolean compareObjectsWithoutPrivateOwned(java.lang.Object firstObject,
                                                    java.lang.Object secondObject,
                                                    org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Compare the references of the two objects are the same, not the objects themselves. Used for independent relationships. This is used for testing and validation purposes.

Specified by:
compareObjectsWithoutPrivateOwned in class ForeignReferenceMapping

compareObjectsWithPrivateOwned

protected boolean compareObjectsWithPrivateOwned(java.lang.Object firstObject,
                                                 java.lang.Object secondObject,
                                                 org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Compare the references of the two objects are the same, and the objects themselves are the same. Used for private relationships. This is used for testing and validation purposes.

Specified by:
compareObjectsWithPrivateOwned in class ForeignReferenceMapping

fixRealObjectReferences

public void fixRealObjectReferences(java.lang.Object object,
                                    java.util.Map objectDescriptors,
                                    java.util.Map processedObjects,
                                    ObjectLevelReadQuery query,
                                    RemoteSession session)
INTERNAL: We are not using a remote valueholder so we need to replace the reference object(s) with the corresponding object(s) from the remote session. ObjectReferenceMappings need to unwrap and wrap the reference object.

Overrides:
fixRealObjectReferences in class DatabaseMapping

getDescriptorForTarget

public ClassDescriptor getDescriptorForTarget(java.lang.Object object,
                                              org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Return a descriptor for the target of this mapping

See Also:
Bug 2612571

getRealAttributeValueFromAttribute

public java.lang.Object getRealAttributeValueFromAttribute(java.lang.Object attributeValue,
                                                           java.lang.Object object,
                                                           org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Object reference must unwrap the reference object if required.

Overrides:
getRealAttributeValueFromAttribute in class ForeignReferenceMapping

isObjectReferenceMapping

public boolean isObjectReferenceMapping()
INTERNAL: Related mapping should implement this method to return true.

Overrides:
isObjectReferenceMapping in class DatabaseMapping

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.

Specified by:
iterateOnRealAttributeValue in class ForeignReferenceMapping

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)
INTERNAL: Merge changes from the source to the target object. Which is the original from the parent UnitOfWork

Specified by:
mergeChangesIntoObject in class DatabaseMapping

mergeIntoObject

public 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.

Specified by:
mergeIntoObject in class DatabaseMapping

collectFields

protected java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> collectFields()
INTERNAL: Return all the fields populated by this mapping, these are foreign keys only.

Overrides:
collectFields in class DatabaseMapping

getForeignKeyFields

public java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> getForeignKeyFields()
INTERNAL: Returns the foreign key names associated with the mapping. These are the fields that will be populated by the 1-1 mapping when writting.


setForeignKeyFields

protected void setForeignKeyFields(java.util.Vector<org.eclipse.persistence.internal.helper.DatabaseField> foreignKeyFields)
INTERNAL: Set the foreign key fields associated with the mapping. These are the fields that will be populated by the 1-1 mapping when writing.


isForeignKeyRelationship

public boolean isForeignKeyRelationship()
INTERNAL: Return if the 1-1 mapping has a foreign key dependency to its target. This is true if any of the foreign key fields are true foreign keys, i.e. populated on write from the targets primary key.


setIsForeignKeyRelationship

public void setIsForeignKeyRelationship(boolean isForeignKeyRelationship)
INTERNAL: Set if the 1-1 mapping has a foreign key dependency to its target. This is true if any of the foreign key fields are true foreign keys, i.e. populated on write from the targets primary key.


preInsert

public void preInsert(WriteObjectQuery query)
               throws DatabaseException,
                      OptimisticLockException
INTERNAL: Insert privately owned parts

Overrides:
preInsert in class DatabaseMapping
Throws:
DatabaseException
OptimisticLockException

readPrivateOwnedForObject

protected java.lang.Object readPrivateOwnedForObject(ObjectLevelModifyQuery modifyQuery)
                                              throws DatabaseException
INTERNAL: Reads the private owned object.

Throws:
DatabaseException

preUpdate

public void preUpdate(WriteObjectQuery query)
               throws DatabaseException,
                      OptimisticLockException
INTERNAL: Update privately owned parts

Overrides:
preUpdate in class DatabaseMapping
Throws:
DatabaseException
OptimisticLockException

postDelete

public void postDelete(DeleteObjectQuery query)
                throws DatabaseException,
                       OptimisticLockException
INTERNAL: Delete privately owned parts

Overrides:
postDelete in class DatabaseMapping
Throws:
DatabaseException
OptimisticLockException

postInsert

public void postInsert(WriteObjectQuery query)
                throws DatabaseException,
                       OptimisticLockException
INTERNAL: Insert privately owned parts

Overrides:
postInsert in class DatabaseMapping
Throws:
DatabaseException
OptimisticLockException

postUpdate

public void postUpdate(WriteObjectQuery query)
                throws DatabaseException,
                       OptimisticLockException
INTERNAL: Update privately owned parts

Overrides:
postUpdate in class DatabaseMapping
Throws:
DatabaseException
OptimisticLockException

preDelete

public void preDelete(DeleteObjectQuery query)
               throws DatabaseException,
                      OptimisticLockException
INTERNAL: Delete privately owned parts

Overrides:
preDelete in class DatabaseMapping
Throws:
DatabaseException
OptimisticLockException

cascadePerformRemoveIfRequired

public void cascadePerformRemoveIfRequired(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

Specified by:
cascadePerformRemoveIfRequired in class DatabaseMapping

cascadePerformRemovePrivateOwnedObjectFromChangeSetIfRequired

public void cascadePerformRemovePrivateOwnedObjectFromChangeSetIfRequired(java.lang.Object object,
                                                                          org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow,
                                                                          java.util.Map visitedObjects)
INTERNAL: Cascade removal of orphaned private owned objects from the UnitOfWorkChangeSet

Overrides:
cascadePerformRemovePrivateOwnedObjectFromChangeSetIfRequired in class DatabaseMapping

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)
INTERNAL: Cascade discover and persist new objects during commit.

Overrides:
cascadeDiscoverAndPersistUnregisteredNewObjects in class DatabaseMapping

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

Specified by:
cascadeRegisterNewIfRequired in class DatabaseMapping

cacheKeysAreEqual

protected boolean cacheKeysAreEqual(org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey1,
                                    org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey2)
INTERNAL:


getPrimaryKeyForObject

protected java.util.Vector getPrimaryKeyForObject(java.lang.Object object,
                                                  org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:


hasConstraintDependency

public boolean hasConstraintDependency()
INTERNAL: The returns if the mapping has any constraint dependencies, such as foreign keys and join tables.

Overrides:
hasConstraintDependency in class DatabaseMapping

createUnitOfWorkValueHolder

public org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder createUnitOfWorkValueHolder(ValueHolderInterface attributeValue,
                                                                                                      java.lang.Object original,
                                                                                                      java.lang.Object clone,
                                                                                                      org.eclipse.persistence.internal.sessions.AbstractRecord row,
                                                                                                      org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork,
                                                                                                      boolean buildDirectlyFromRow)
INTERNAL: Builder the unit of work value holder.

Overrides:
createUnitOfWorkValueHolder in class ForeignReferenceMapping
Parameters:
buildDirectlyFromRow - indicates that we are building the clone directly from a row as opposed to building the original from the row, putting it in the shared cache, and then cloning the original.

extractPrimaryKeyRowForSourceObject

public org.eclipse.persistence.internal.sessions.AbstractRecord extractPrimaryKeyRowForSourceObject(java.lang.Object domainObject,
                                                                                                    org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Extract the reference pk for rvh usage in remote model.


extractPrimaryKeysForReferenceObject

public java.util.Vector extractPrimaryKeysForReferenceObject(java.lang.Object domainObject,
                                                             org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Extract the reference pk for rvh usage in remote model.


extractPrimaryKeysForReferenceObjectFromRow

public java.util.Vector extractPrimaryKeysForReferenceObjectFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row)
INTERNAL: Return the primary key for the reference object (i.e. the object object referenced by domainObject and specified by mapping). This key will be used by a RemoteValueHolder.


extractPrimaryKeysFromRealReferenceObject

public java.util.Vector extractPrimaryKeysFromRealReferenceObject(java.lang.Object object,
                                                                  org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Extract the reference pk for rvh usage in remote model.


preInitialize

public void preInitialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
                   throws DescriptorException
INTERNAL: Initialize the state of mapping.

Overrides:
preInitialize in class ForeignReferenceMapping
Throws:
DescriptorException

insert

protected void insert(WriteObjectQuery query)
               throws DatabaseException,
                      OptimisticLockException
INTERNAL: Insert privately owned parts

Throws:
DatabaseException
OptimisticLockException

update

protected void update(WriteObjectQuery query)
               throws DatabaseException,
                      OptimisticLockException
INTERNAL: Update the private owned part.

Throws:
DatabaseException
OptimisticLockException

useProxyIndirection

public void useProxyIndirection()
PUBLIC: Set this mapping to use Proxy Indirection. Proxy Indirection uses the Proxy and InvocationHandler features of JDK 1.3 to provide "transparent indirection" for 1:1 relationships. In order to use Proxy Indirection:

With this policy, proxy objects are returned during object creation. When a message other than toString is called on the proxy the real object data is retrieved from the database. By default, use the target class' full list of interfaces for the proxy.


buildReferencesPKList

public java.lang.Object[] buildReferencesPKList(java.lang.Object entity,
                                                java.lang.Object attribute,
                                                org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: This method will access the target relationship and create a list of PKs of the target entities. This method is used in combination with the CachedValueHolder to store references to PK's to be loaded from a cache instead of a query.

Specified by:
buildReferencesPKList in class ForeignReferenceMapping

buildTargetInterfaces

public java.util.Collection buildTargetInterfaces(java.lang.Class aClass,
                                                  java.util.Collection targetInterfacesCol)
INTERNAL: Build a list of all the interfaces and super interfaces for a given class.


useProxyIndirection

public void useProxyIndirection(java.lang.Class[] targetInterfaces)
PUBLIC: Set this mapping to use Proxy Indirection. Proxy Indirection uses the Proxy and InvocationHandler features of JDK 1.3 to provide "transparent indirection" for 1:1 relationships. In order to use Proxy Indirection:

With this policy, proxy objects are returned during object creation. When a message other than toString is called on the proxy the real object data is retrieved from the database.

Parameters:
proxyInterfaces - The interfaces that the target class implements. The attribute must be typed as one of these interfaces.

useProxyIndirection

public void useProxyIndirection(java.lang.Class targetInterface)
PUBLIC: Set this mapping to use Proxy Indirection. Proxy Indirection uses the Proxy and InvocationHandler features of JDK 1.3 to provide "transparent indirection" for 1:1 relationships. In order to use Proxy Indirection:

With this policy, proxy objects are returned during object creation. When a message other than toString is called on the proxy the real object data is retrieved from the database.

Parameters:
proxyInterface - The interface that the target class implements. The attribute must be typed as this interface.

valueFromPKList

public java.lang.Object valueFromPKList(java.lang.Object[] pks,
                                        org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: This method is used to load a relationship from a list of PKs. This list may be available if the relationship has been cached.

Specified by:
valueFromPKList in class ForeignReferenceMapping

verifyDelete

public boolean verifyDelete(java.lang.Object object,
                            org.eclipse.persistence.internal.sessions.AbstractSession session)
                     throws DatabaseException
INTERNAL: To verify if the specified object is deleted or not.

Overrides:
verifyDelete in class DatabaseMapping
Throws:
DatabaseException

writeFromObjectIntoRowForUpdate

public void writeFromObjectIntoRowForUpdate(WriteObjectQuery query,
                                            org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow)
INTERNAL: Get a value from the object and set that in the respective field of the row. But before that check if the reference object is instantiated or not.

Overrides:
writeFromObjectIntoRowForUpdate in class DatabaseMapping

writeFromObjectIntoRowForWhereClause

public void writeFromObjectIntoRowForWhereClause(ObjectLevelModifyQuery query,
                                                 org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow)
INTERNAL: Get a value from the object and set that in the respective field of the row.

Overrides:
writeFromObjectIntoRowForWhereClause in class DatabaseMapping

isChangeTrackingSupported

public boolean isChangeTrackingSupported(Project project)
INTERNAL: Return if this mapping supports change tracking.

Overrides:
isChangeTrackingSupported in class DatabaseMapping

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 the change record with the new value. This is used by attribute change tracking.

Overrides:
updateChangeRecord in class DatabaseMapping

buildChangeRecord

public org.eclipse.persistence.internal.sessions.ChangeRecord buildChangeRecord(java.lang.Object clone,
                                                                                org.eclipse.persistence.internal.sessions.ObjectChangeSet owner,
                                                                                org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Directly build a change record without comparison

Overrides:
buildChangeRecord in class DatabaseMapping

EclipseLink 1.1.4, build 'v20100812-r7860' API Reference