org.apache.cayenne.map

## Class DbRelationship

- java.lang.Object
- - org.apache.cayenne.map.Relationship
  - - org.apache.cayenne.map.DbRelationship

- All Implemented Interfaces:
    Serializable, ConfigurationNode, CayenneMapEntry, XMLSerializable

      public class DbRelationship
      extends Relationship
      implements ConfigurationNode

  A DbRelationship is a descriptor of a database inter-table relationship based on one or more primary key/foreign key pairs.
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected List<DbJoin>` | `joins`
    `protected boolean` | `toDependentPK`

    - ### Fields inherited from class org.apache.cayenne.map.Relationship

      `name, runtime, sourceEntity, targetEntityName, toMany`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DbRelationship()`
    `DbRelationship(String name)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `<T> T` | `acceptVisitor(ConfigurationNodeVisitor<T> visitor)`
    `void` | `addJoin(DbJoin join)` Adds a join.
    `DbRelationship` | `createReverseRelationship()` Creates a new relationship with the same set of joins, but going in the opposite direction.
    `void` | `encodeAsXML(XMLEncoder encoder, ConfigurationNodeVisitor delegate)` Prints itself as XML to the provided XMLEncoder.
    `List<DbJoin>` | `getJoins()` Returns a list of joins.
    `DbRelationship` | `getReverseRelationship()` Returns DbRelationship that is the opposite of this DbRelationship.
    `Collection<DbAttribute>` | `getSourceAttributes()` Returns a Collection of source attributes.
    `DbEntity` | `getSourceEntity()` Returns relationship source entity.
    `String` | `getSourceEntityName()`
    `Collection<DbAttribute>` | `getTargetAttributes()` Returns a Collection of target attributes.
    `DbEntity` | `getTargetEntity()` Returns a target of this relationship.
    `boolean` | `isFromPK()`
    `boolean` | `isMandatory()` Returns if relationship is mandatory
    `boolean` | `isSourceIndependentFromTargetChange()` Returns a boolean indicating whether modifying a target of such relationship in any way will not change the underlying table row of the source.
    `boolean` | `isToDependentPK()` Returns `true` if relationship from source to target points to dependent primary key.
    `boolean` | `isToMasterPK()` Returns `true` if a method `isToDependentPK` of reverse relationship of this relationship returns `true`.
    `boolean` | `isToPK()` Returns true if the relationship points to at least one of the PK columns of the target entity.
    `boolean` | `isValidForDepPk()`
    `void` | `removeAllJoins()`
    `void` | `removeJoin(DbJoin join)`
    `void` | `setJoins(Collection<DbJoin> newJoins)`
    `void` | `setToDependentPK(boolean toDependentPK)`
    `void` | `setToMany(boolean toMany)` Sets relationship multiplicity.
    `Map<String,Object>` | `srcFkSnapshotWithTargetSnapshot(Map<String,Object> targetSnapshot)` Creates a snapshot of foreign key attributes of a source object of this relationship based on a snapshot of a target.
    `Map<String,Object>` | `srcPkSnapshotWithTargetSnapshot(Map<String,Object> targetSnapshot)` Creates a snapshot of primary key attributes of a source object of this relationship based on a snapshot of a target.
    `Map<String,Object>` | `targetPkSnapshotWithSrcSnapshot(Map<String,Object> srcSnapshot)` Creates a snapshot of primary key attributes of a target object of this relationship based on a snapshot of a source.
    `String` | `toString()` Overrides Object.toString() to return informative description.

    - ### Methods inherited from class org.apache.cayenne.map.Relationship

      `getName, getParent, getTargetEntityName, isRuntime, isToMany, setName, setParent, setRuntime, setSourceEntity, setTargetEntityName, setTargetEntityName`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### joins

          protected List<DbJoin> joins

    - #### toDependentPK

          protected boolean toDependentPK

  - ### Constructor Detail

    - #### DbRelationship

          public DbRelationship()

    - #### DbRelationship

          public DbRelationship(String name)

  - ### Method Detail

    - #### getSourceEntity

          public DbEntity getSourceEntity()

      Description copied from class: `Relationship`
      Returns relationship source entity.
      Overrides:
        `getSourceEntity` in class `Relationship`

    - #### acceptVisitor

          public <T> T acceptVisitor(ConfigurationNodeVisitor<T> visitor)

      Specified by:
        `acceptVisitor` in interface `ConfigurationNode`
      Since:
        3.1

    - #### encodeAsXML

          public void encodeAsXML(XMLEncoder encoder,
                                  ConfigurationNodeVisitor delegate)

      Prints itself as XML to the provided XMLEncoder.
      Specified by:
        `encodeAsXML` in interface `XMLSerializable`
      Since:
        1.1

    - #### getTargetEntity

          public DbEntity getTargetEntity()

      Returns a target of this relationship. If relationship is not attached to a DbEntity, and DbEntity doesn't have a namespace, and exception is thrown.
      Specified by:
        `getTargetEntity` in class `Relationship`

    - #### getTargetAttributes

          public Collection<DbAttribute> getTargetAttributes()

      Returns a Collection of target attributes.
      Since:
        1.1

    - #### getSourceAttributes

          public Collection<DbAttribute> getSourceAttributes()

      Returns a Collection of source attributes.
      Since:
        1.1

    - #### createReverseRelationship

          public DbRelationship createReverseRelationship()

      Creates a new relationship with the same set of joins, but going in the opposite direction.
      Since:
        1.0.5

    - #### getReverseRelationship

          public DbRelationship getReverseRelationship()

      Returns DbRelationship that is the opposite of this DbRelationship. This means a relationship from this target entity to this source entity with the same join semantics. Returns null if no such relationship exists.
      Specified by:
        `getReverseRelationship` in class `Relationship`

    - #### isToPK

          public boolean isToPK()

      Returns true if the relationship points to at least one of the PK columns of the target entity.
      Since:
        1.1

    - #### isFromPK

          public boolean isFromPK()

      Since:
        3.0

    - #### isToMasterPK

          public boolean isToMasterPK()

      Returns `true` if a method `isToDependentPK` of reverse relationship of this relationship returns `true`.

    - #### isSourceIndependentFromTargetChange

          public boolean isSourceIndependentFromTargetChange()

      Returns a boolean indicating whether modifying a target of such relationship in any way will not change the underlying table row of the source.
      Since:
        4.0

    - #### isToDependentPK

          public boolean isToDependentPK()

      Returns `true` if relationship from source to target points to dependent primary key. Dependent PK is a primary key column of the destination table that is also a FK to the source column.

    - #### setToDependentPK

          public void setToDependentPK(boolean toDependentPK)

    - #### isValidForDepPk

          public boolean isValidForDepPk()

      Since:
        1.1

    - #### getJoins

          public List<DbJoin> getJoins()

      Returns a list of joins. List is returned by reference, so any modifications of the list will affect this relationship.

    - #### addJoin

          public void addJoin(DbJoin join)

      Adds a join.
      Since:
        1.1

    - #### removeJoin

          public void removeJoin(DbJoin join)

    - #### removeAllJoins

          public void removeAllJoins()

    - #### setJoins

          public void setJoins(Collection<DbJoin> newJoins)

    - #### targetPkSnapshotWithSrcSnapshot

          public Map<String,Object> targetPkSnapshotWithSrcSnapshot(Map<String,Object> srcSnapshot)

      Creates a snapshot of primary key attributes of a target object of this relationship based on a snapshot of a source. Only "to-one" relationships are supported. Returns null if relationship does not point to an object. Throws CayenneRuntimeException if relationship is "to many" or if snapshot is missing id components.

    - #### srcFkSnapshotWithTargetSnapshot

          public Map<String,Object> srcFkSnapshotWithTargetSnapshot(Map<String,Object> targetSnapshot)

      Creates a snapshot of foreign key attributes of a source object of this relationship based on a snapshot of a target. Only "to-one" relationships are supported. Throws CayenneRuntimeException if relationship is "to many".

    - #### srcPkSnapshotWithTargetSnapshot

          public Map<String,Object> srcPkSnapshotWithTargetSnapshot(Map<String,Object> targetSnapshot)

      Creates a snapshot of primary key attributes of a source object of this relationship based on a snapshot of a target. Only "to-many" relationships are supported. Throws CayenneRuntimeException if relationship is "to one".

    - #### setToMany

          public void setToMany(boolean toMany)

      Sets relationship multiplicity.

    - #### isMandatory

          public boolean isMandatory()

      Description copied from class: `Relationship`
      Returns if relationship is mandatory
      Specified by:
        `isMandatory` in class `Relationship`

    - #### toString

          public String toString()

      Description copied from class: `Relationship`
      Overrides Object.toString() to return informative description.
      Overrides:
        `toString` in class `Relationship`

    - #### getSourceEntityName

          public String getSourceEntityName()

Copyright © 2001–2021 Apache Cayenne. All rights reserved.