Package 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 Description protected List<DbJoin>joinsprotected booleantoDependentPK-
Fields inherited from class org.apache.cayenne.map.Relationship
name, runtime, sourceEntity, targetEntityName, toMany
-
-
Constructor Summary
Constructors Constructor Description DbRelationship()DbRelationship(String name)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T> TacceptVisitor(ConfigurationNodeVisitor<T> visitor)voidaddJoin(DbJoin join)Adds a join.DbRelationshipcreateReverseRelationship()Creates a new relationship with the same set of joins, but going in the opposite direction.voidencodeAsXML(XMLEncoder encoder, ConfigurationNodeVisitor delegate)Prints itself as XML to the provided XMLEncoder.List<DbJoin>getJoins()Returns a list of joins.DbRelationshipgetReverseRelationship()Returns DbRelationship that is the opposite of this DbRelationship.Collection<DbAttribute>getSourceAttributes()Returns a Collection of source attributes.DbEntitygetSourceEntity()Returns relationship source entity.StringgetSourceEntityName()Collection<DbAttribute>getTargetAttributes()Returns a Collection of target attributes.DbEntitygetTargetEntity()Returns a target of this relationship.booleanisFromPK()booleanisMandatory()Returns if relationship is mandatorybooleanisSourceIndependentFromTargetChange()Returns a boolean indicating whether modifying a target of such relationship in any way will not change the underlying table row of the source.booleanisToDependentPK()Returnstrueif relationship from source to target points to dependent primary key.booleanisToMasterPK()Returnstrueif a methodisToDependentPKof reverse relationship of this relationship returnstrue.booleanisToPK()Returns true if the relationship points to at least one of the PK columns of the target entity.booleanisValidForDepPk()voidremoveAllJoins()voidremoveJoin(DbJoin join)voidsetJoins(Collection<DbJoin> newJoins)voidsetToDependentPK(boolean toDependentPK)voidsetToMany(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.StringtoString()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
-
-
-
-
Constructor Detail
-
DbRelationship
public DbRelationship()
-
DbRelationship
public DbRelationship(String name)
-
-
Method Detail
-
getSourceEntity
public DbEntity getSourceEntity()
Description copied from class:RelationshipReturns relationship source entity.- Overrides:
getSourceEntityin classRelationship
-
acceptVisitor
public <T> T acceptVisitor(ConfigurationNodeVisitor<T> visitor)
- Specified by:
acceptVisitorin interfaceConfigurationNode- Since:
- 3.1
-
encodeAsXML
public void encodeAsXML(XMLEncoder encoder, ConfigurationNodeVisitor delegate)
Prints itself as XML to the provided XMLEncoder.- Specified by:
encodeAsXMLin interfaceXMLSerializable- 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:
getTargetEntityin classRelationship
-
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:
getReverseRelationshipin classRelationship
-
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()
Returnstrueif a methodisToDependentPKof reverse relationship of this relationship returnstrue.
-
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()
Returnstrueif 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:RelationshipReturns if relationship is mandatory- Specified by:
isMandatoryin classRelationship
-
toString
public String toString()
Description copied from class:RelationshipOverrides Object.toString() to return informative description.- Overrides:
toStringin classRelationship
-
getSourceEntityName
public String getSourceEntityName()
-
-