Class 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:
  • 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.
      getSourceEntity in class Relationship
    • acceptVisitor

      public <T> T acceptVisitor(ConfigurationNodeVisitor<T> visitor)
      Specified by:
      acceptVisitor in interface ConfigurationNode
    • encodeAsXML

      public void encodeAsXML(XMLEncoder encoder, ConfigurationNodeVisitor delegate)
      Prints itself as XML to the provided XMLEncoder.
      Specified by:
      encodeAsXML in interface XMLSerializable
    • 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.
    • getSourceAttributes

      public Collection<DbAttribute> getSourceAttributes()
      Returns a Collection of source attributes.
    • createReverseRelationship

      public DbRelationship createReverseRelationship()
      Creates a new relationship with the same set of joins, but going in the opposite direction.
    • 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.
    • isFromPK

      public boolean isFromPK()
    • 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.
    • 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()
    • 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.
    • 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.
      toString in class Relationship
    • getSourceEntityName

      public String getSourceEntityName()