Class EISOneToOneMapping

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>
All Implemented Interfaces:
Serializable, Cloneable, EISMapping

public class EISOneToOneMapping extends ObjectReferenceMapping implements EISMapping

An EIS one-to-one mapping is a reference mapping that represents the relationship between a single source object and a single mapped persistent Java object. The source object usually contains a foreign key (pointer) to the target object (key on source); alternatively, the target object may contain a foreign key to the source object (key on target). Because both the source and target objects use interactions, they must both be configured as root object types.

Record formats
Record Type Description
Indexed Ordered collection of record elements. The indexed record EIS format enables Java class attribute values to be retrieved by position or index.
Mapped Key-value map based representation of record elements. The mapped record EIS format enables Java class attribute values to be retrieved by an object key.
XML Record/Map representation of an XML DOM element.
See Also:
  • Field Details

    • sourceToTargetKeyFields

      protected Map sourceToTargetKeyFields
      Maps the source foreign/primary key fields to the target primary/foreign key fields.
    • targetToSourceKeyFields

      protected Map<org.eclipse.persistence.internal.helper.DatabaseField,org.eclipse.persistence.internal.helper.DatabaseField> targetToSourceKeyFields
      Maps the target primary/foreign key fields to the source foreign/primary key fields.
    • shouldVerifyDelete

      protected boolean shouldVerifyDelete
      These are used for non-unit of work modification to check if the value of the 1-1 was changed and a deletion is required.
    • privateOwnedCriteria

      protected transient Expression privateOwnedCriteria
  • Constructor Details

    • EISOneToOneMapping

      public EISOneToOneMapping()
  • Method Details

    • isEISMapping

      public boolean isEISMapping()
      INTERNAL:
      Overrides:
      isEISMapping in class DatabaseMapping
    • isOneToOneMapping

      public boolean isOneToOneMapping()
      INTERNAL:
      Overrides:
      isOneToOneMapping in class DatabaseMapping
    • addForeignKeyField

      public void addForeignKeyField(org.eclipse.persistence.internal.helper.DatabaseField sourceForeignKeyField, org.eclipse.persistence.internal.helper.DatabaseField targetKeyField)
      PUBLIC: Define the source foreign key relationship in the one-to-one mapping. This method is used to add foreign key relationships to the mapping. Both the source foreign key field name and the corresponding target primary key field name must be specified.
      Overrides:
      addForeignKeyField in class ForeignReferenceMapping
    • addForeignKeyFieldName

      public void addForeignKeyFieldName(String sourceForeignKeyFieldName, String targetKeyFieldName)
      PUBLIC: Define the source foreign key relationship in the one-to-one mapping. This method is used to add foreign key relationships to the mapping. Both the source foreign key field name and the corresponding target primary key field name must be specified.
    • clone

      public Object clone()
      INTERNAL: This methods clones all the fields and ensures that each collection refers to the same clones.
      Overrides:
      clone in class ForeignReferenceMapping
    • extractPrimaryKeysForReferenceObjectFromRow

      public Object 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.
      Overrides:
      extractPrimaryKeysForReferenceObjectFromRow in class ObjectReferenceMapping
    • initialize

      public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session) throws DescriptorException
      INTERNAL: Initialize the mapping.
      Overrides:
      initialize in class ForeignReferenceMapping
      Throws:
      DescriptorException
    • initializeForeignKeys

      protected void initializeForeignKeys(org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: The foreign keys primary keys are stored as database fields in the hashtable.
    • initializeSelectionCriteria

      protected void initializeSelectionCriteria(org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Selection criteria is created with source foreign keys and target keys. This criteria is then used to read target records from the table. CR#3922 - This method is almost the same as buildSelectionCriteria() the difference is that getSelectionCriteria() is called
    • readPrivateOwnedForObject

      protected Object readPrivateOwnedForObject(ObjectLevelModifyQuery modifyQuery) throws DatabaseException
      INTERNAL: Reads the private owned object.
      Overrides:
      readPrivateOwnedForObject in class ObjectReferenceMapping
      Throws:
      DatabaseException
    • initializePrivateOwnedCriteria

      protected void initializePrivateOwnedCriteria()
      INTERNAL: Selection criteria is created with source foreign keys and target keys.
    • valueFromRow

      public Object valueFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.queries.JoinedAttributeManager joinManager, ObjectBuildingQuery query, org.eclipse.persistence.internal.identitymaps.CacheKey cacheKey, org.eclipse.persistence.internal.sessions.AbstractSession session, boolean isTargetProtected, Boolean[] wasCacheUsed) throws DatabaseException
      INTERNAL: Return the value of the field from the row or a value holder on the query to obtain the object. Check for batch + aggregation reading.
      Overrides:
      valueFromRow in class ForeignReferenceMapping
      Throws:
      DatabaseException
    • writeFromObjectIntoRow

      public void writeFromObjectIntoRow(Object object, org.eclipse.persistence.internal.sessions.AbstractRecord Record, org.eclipse.persistence.internal.sessions.AbstractSession session, DatabaseMapping.WriteType writeType)
      INTERNAL: Get a value from the object and set that in the respective field of the row.
      Overrides:
      writeFromObjectIntoRow in class DatabaseMapping
    • getFieldClassification

      public Class getFieldClassification(org.eclipse.persistence.internal.helper.DatabaseField fieldToClassify) throws DescriptorException
      INTERNAL: Return the classifiction for the field contained in the mapping. This is used to convert the row value to a consistent java value.
      Overrides:
      getFieldClassification in class DatabaseMapping
      Throws:
      DescriptorException
    • getPrivateOwnedCriteria

      public Expression getPrivateOwnedCriteria()
      INTERNAL: The private owned criteria is only used outside of the unit of work to compare the previous value of the reference.
    • setPrivateOwnedCriteria

      protected void setPrivateOwnedCriteria(Expression expression)
      INTERNAL: Private owned criteria is used to verify the deletion of the target. It joins from the source table on the foreign key to the target table, with a parameterization of the primary key of the source object.
    • setShouldVerifyDelete

      public void setShouldVerifyDelete(boolean shouldVerifyDelete)
      PUBLIC: Verify delete is used during delete and update on private 1:1's outside of a unit of work only. It checks for the previous value of the target object through joining the source and target tables. By default it is always done, but may be disabled for performance on distributed database reasons. In the unit of work the previous value is obtained from the backup-clone so it is never used.
      Parameters:
      shouldVerifyDelete - Sets whether delete verification should be performed
    • shouldVerifyDelete

      public boolean shouldVerifyDelete()
      PUBLIC: Verify delete is used during delete and update outside of a unit of work only. It checks for the previous value of the target object through joining the source and target tables.
      Returns:
      TRUE if verify delete has been enabled
    • getSourceToTargetKeyFields

      public Map<org.eclipse.persistence.internal.helper.DatabaseField,org.eclipse.persistence.internal.helper.DatabaseField> getSourceToTargetKeyFields()
      INTERNAL: Gets the foreign key fields.
      Returns:
      The mapping from source to target key fields
    • getTargetToSourceKeyFields

      public Map<org.eclipse.persistence.internal.helper.DatabaseField,org.eclipse.persistence.internal.helper.DatabaseField> getTargetToSourceKeyFields()
      INTERNAL: Gets the target foreign key fields.
      Returns:
      The mapping from target to source key fields
    • setSourceToTargetKeyFields

      public void setSourceToTargetKeyFields(Map sourceToTargetKeyFields)
      INTERNAL: Set the source keys to target keys fields association.
      Parameters:
      sourceToTargetKeyFields - The mapping from source keys to target keys
    • setTargetToSourceKeyFields

      public void setTargetToSourceKeyFields(Map targetToSourceKeyFields)
      INTERNAL: Set the target keys to source keys fields association.
      Parameters:
      targetToSourceKeyFields - The mapping from target keys to source keys
    • setSelectionSQLString

      public void setSelectionSQLString(String sqlString)
      INTERNAL: This method is not supported in an EIS environment.
      Overrides:
      setSelectionSQLString in class ForeignReferenceMapping