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 Details

    • joins

      protected List<DbJoin> joins
    • toDependentPK

      protected boolean toDependentPK
  • Constructor Details

    • DbRelationship

      public DbRelationship()
    • DbRelationship

      public DbRelationship​(String name)
  • Method Details

    • 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()