Package org.apache.cayenne.map
Class ObjRelationship
java.lang.Object
org.apache.cayenne.map.Relationship
org.apache.cayenne.map.ObjRelationship
- All Implemented Interfaces:
- Serializable,- ConfigurationNode,- CayenneMapEntry,- XMLSerializable
public class ObjRelationship extends Relationship implements ConfigurationNode
Describes an association between two Java classes mapped as source and target
 ObjEntity. Maps to a path of DbRelationships.
- See Also:
- Serialized Form
- 
Field SummaryFields Modifier and Type Field Description protected StringcollectionTypeStores the type of collection mapped by a to-many relationship.protected List<DbRelationship>dbRelationshipsstatic StringDEFAULT_COLLECTION_TYPEDenotes a default type of to-many relationship collection which is a Java List.protected intdeleteRuleprotected StringmapKeyStores a property name of a target entity used to create a relationship map.protected booleanusedForLockingFields inherited from class org.apache.cayenne.map.Relationshipname, runtime, sourceEntity, targetEntityName, toMany
- 
Constructor SummaryConstructors Constructor Description ObjRelationship()ObjRelationship(String name)
- 
Method SummaryModifier and Type Method Description <T> TacceptVisitor(ConfigurationNodeVisitor<T> visitor)voidaddDbRelationship(DbRelationship dbRel)Appends a DbRelationship to the existing list of DbRelationships.voidclearDbRelationships()ObjRelationshipcreateReverseRelationship()Creates a complimentary reverse relationship from target entity to the source entity.voidencodeAsXML(XMLEncoder encoder, ConfigurationNodeVisitor delegate)Prints itself as XML to the provided XMLEncoder.ObjRelationshipgetClientRelationship()Returns an ObjAttribute stripped of any server-side information, such as DbAttribute mapping.StringgetCollectionType()Returns the interface of collection mapped by a to-many relationship.StringgetDbRelationshipPath()Returns a dot-separated path over mapped DbRelationships.List<DbRelationship>getDbRelationships()Returns an immutable list of underlying DbRelationships.intgetDeleteRule()Returns the deleteRule.StringgetMapKey()Returns a property name of a target entity used to create a relationship map.StringgetReverseDbRelationshipPath()Returns a reversed dbRelationship path.ObjRelationshipgetReverseRelationship()Returns a "complimentary" ObjRelationship going in the opposite direction.StringgetReverseRelationshipName()Returns the name of a complimentary relationship going in the opposite direction or null if it doesn't exist.ObjEntitygetSourceEntity()Returns relationship source entity.ObjEntitygetTargetEntity()Returns a target ObjEntity of this relationship.booleanisFlattened()Returns true if the relationship is a "flattened" relationship.booleanisMandatory()Returns if relationship is mandatorybooleanisOptional()Returns a boolean indicating whether the presence of a non-null source key(s) will not guarantee a presence of a target record.booleanisReadOnly()Returns true if the relationship is flattened, but is not of the single case that can have automatic write support.booleanisSourceDefiningTargetPrecenseAndType(EntityResolver entityResolver)Returns true if the relationship is non-optional and target has no subclasses.booleanisSourceIndependentFromTargetChange()Returns a boolean indicating whether modifying a target of such relationship in any way will not change the underlying table row of the source.booleanisToDependentEntity()Returns true if underlying DbRelationships point to dependent entity.booleanisToMany()Returns a boolean value that determines relationship multiplicity.booleanisToPK()Returns true if the underlying DbRelationships point to a at least one of the columns of the target entity.booleanisUsedForLocking()Returns whether this attribute should be used for locking.voidrecalculateReadOnlyValue()Recalculates a new readonly value based on the underlying DbRelationships.voidrecalculateToManyValue()Recalculates whether a relationship is toMany or toOne, based on the underlying db relationships.voidremoveDbRelationship(DbRelationship dbRel)Removes the relationshipdbRelfrom the list of relationships.voidsetCollectionType(String collectionType)voidsetDbRelationshipPath(String relationshipPath)Sets mapped DbRelationships as a dot-separated path.voidsetDeferredDbRelationshipPath(String relationshipPath)Sets relationship path, but does not trigger its conversion to ListFor internal purposes, primarily datamap loading voidsetDeleteRule(int value)Sets the delete rule of the relationship.voidsetMapKey(String mapKey)voidsetUsedForLocking(boolean usedForLocking)Sets whether this attribute should be used for locking.StringtoString()Overrides Object.toString() to return informative description.Methods inherited from class org.apache.cayenne.map.RelationshipgetName, getParent, getTargetEntityName, isRuntime, setName, setParent, setRuntime, setSourceEntity, setTargetEntityName, setTargetEntityName
- 
Field Details- 
DEFAULT_COLLECTION_TYPEDenotes a default type of to-many relationship collection which is a Java List.- Since:
- 3.0
- See Also:
- Constant Field Values
 
- 
deleteRuleprotected int deleteRule
- 
usedForLockingprotected boolean usedForLocking
- 
dbRelationships
- 
collectionTypeStores the type of collection mapped by a to-many relationship. Null for to-one relationships.- Since:
- 3.0
 
- 
mapKeyStores a property name of a target entity used to create a relationship map. Only has effect if collectionType property is set to "java.util.Map".- Since:
- 3.0
 
 
- 
- 
Constructor Details- 
ObjRelationshippublic ObjRelationship()
- 
ObjRelationship
 
- 
- 
Method Details- 
getSourceEntityDescription copied from class:RelationshipReturns relationship source entity.- Overrides:
- getSourceEntityin class- Relationship
 
- 
acceptVisitor- Specified by:
- acceptVisitorin interface- ConfigurationNode
- Since:
- 3.1
 
- 
encodeAsXMLPrints itself as XML to the provided XMLEncoder.- Specified by:
- encodeAsXMLin interface- XMLSerializable
- Since:
- 1.1
 
- 
getTargetEntityReturns a target ObjEntity of this relationship. Entity is looked up in the parent DataMap using "targetEntityName".- Specified by:
- getTargetEntityin class- Relationship
 
- 
getReverseRelationshipNameReturns the name of a complimentary relationship going in the opposite direction or null if it doesn't exist.- Since:
- 1.2
 
- 
getReverseRelationshipReturns a "complimentary" ObjRelationship going in the opposite direction. Returns null if no such relationship is found.- Specified by:
- getReverseRelationshipin class- Relationship
 
- 
createReverseRelationshipCreates a complimentary reverse relationship from target entity to the source entity. A new relationship is created regardless of whether one already exists. Returned relationship is not attached to the source entity and has no name. Throws aCayenneRuntimeExceptionif reverse DbRelationship is not mapped.- Since:
- 3.0
 
- 
getDbRelationshipsReturns an immutable list of underlying DbRelationships.
- 
addDbRelationshipAppends a DbRelationship to the existing list of DbRelationships.
- 
removeDbRelationshipRemoves the relationshipdbRelfrom the list of relationships.
- 
clearDbRelationshipspublic void clearDbRelationships()
- 
isOptionalpublic boolean isOptional()Returns a boolean indicating whether the presence of a non-null source key(s) will not guarantee a presence of a target record. PK..FK relationships are all optional, but there are other more subtle cases, such as PK..PK, etc.- Since:
- 3.0
 
- 
isSourceDefiningTargetPrecenseAndTypeReturns true if the relationship is non-optional and target has no subclasses.- Since:
- 3.0
 
- 
isSourceIndependentFromTargetChangepublic 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:
- 1.1
 
- 
isToDependentEntitypublic boolean isToDependentEntity()Returns true if underlying DbRelationships point to dependent entity.
- 
isToPKpublic boolean isToPK()Returns true if the underlying DbRelationships point to a at least one of the columns of the target entity.- Since:
- 1.1
 
- 
isFlattenedpublic boolean isFlattened()Returns true if the relationship is a "flattened" relationship. A relationship is considered "flattened" if it maps to more than one DbRelationship. Such chain of DbRelationships is also called "relationship path". All flattened relationships are at least readable, but only those formed across a many-many join table (with no custom attributes other than foreign keys) can be automatically written.- Returns:
- flag indicating if the relationship is flattened or not.
- See Also:
- isReadOnly()
 
- 
isReadOnlypublic boolean isReadOnly()Returns true if the relationship is flattened, but is not of the single case that can have automatic write support. Otherwise, it returns false.- Returns:
- flag indicating if the relationship is read only or not
 
- 
isToManypublic boolean isToMany()Description copied from class:RelationshipReturns a boolean value that determines relationship multiplicity. This defines semantics of the connection between two nodes described by the source and target entities. E.g. to-many relationship between two Persistent object classes means that a source object would have a collection of target objects. This is a read-only property.- Overrides:
- isToManyin class- Relationship
 
- 
getDeleteRulepublic int getDeleteRule()Returns the deleteRule. The delete rule is a constant from the DeleteRule class, and specifies what should happen to the destination object when the source object is deleted.- Returns:
- int a constant from DeleteRule
- See Also:
- setDeleteRule(int)
 
- 
setDeleteRulepublic void setDeleteRule(int value)Sets the delete rule of the relationship.- Parameters:
- value- New delete rule. Must be one of the constants defined in DeleteRule class.
- Throws:
- IllegalArgumentException- if the value is not a valid delete rule.
- See Also:
- DeleteRule
 
- 
isUsedForLockingpublic boolean isUsedForLocking()Returns whether this attribute should be used for locking.- Since:
- 1.1
 
- 
setUsedForLockingpublic void setUsedForLocking(boolean usedForLocking)Sets whether this attribute should be used for locking.- Since:
- 1.1
 
- 
getDbRelationshipPathReturns a dot-separated path over mapped DbRelationships.- Since:
- 1.1
 
- 
getReverseDbRelationshipPathReturns a reversed dbRelationship path.- Throws:
- ExpressionException
- Since:
- 1.2
 
- 
setDbRelationshipPathSets mapped DbRelationships as a dot-separated path.
- 
setDeferredDbRelationshipPathSets relationship path, but does not trigger its conversion to ListFor internal purposes, primarily datamap loading - Since:
- 4.1 this method is public as it is used by new XML loaders
 
- 
recalculateToManyValuepublic void recalculateToManyValue()Recalculates whether a relationship is toMany or toOne, based on the underlying db relationships.
- 
recalculateReadOnlyValuepublic void recalculateReadOnlyValue()Recalculates a new readonly value based on the underlying DbRelationships.
- 
toStringDescription copied from class:RelationshipOverrides Object.toString() to return informative description.- Overrides:
- toStringin class- Relationship
 
- 
getClientRelationshipReturns an ObjAttribute stripped of any server-side information, such as DbAttribute mapping.- Since:
- 1.2
 
- 
getCollectionTypeReturns the interface of collection mapped by a to-many relationship. Returns null for to-one relationships. Default for to-many is "java.util.List". Other possible values are "java.util.Set", "java.util.Collection", "java.util.Map".- Since:
- 3.0
 
- 
setCollectionType- Since:
- 3.0
 
- 
getMapKeyReturns a property name of a target entity used to create a relationship map. Only has effect if collectionType property is set to "java.util.Map".- Returns:
- The attribute name used for the map key or nullif the default (PK) is used as the map key.
- Since:
- 3.0
 
- 
setMapKey- Since:
- 3.0
 
- 
isMandatorypublic boolean isMandatory()Description copied from class:RelationshipReturns if relationship is mandatory- Specified by:
- isMandatoryin class- Relationship
 
 
-