Package org.apache.cayenne.map

## Class Entity

- java.lang.Object
- - org.apache.cayenne.map.Entity

- All Implemented Interfaces:
    `Serializable`, `CayenneMapEntry`, `XMLSerializable`
  Direct Known Subclasses:
    `DbEntity`, `ObjEntity`

      public abstract class Entity
      extends Object
      implements CayenneMapEntry, XMLSerializable, Serializable

  An Entity is an abstract descriptor for an entity mapping concept. Entity can represent either a descriptor of database table or a persistent object.
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected Map<String,​Attribute>` | `attributes` |
    `protected DataMap` | `dataMap` |
    `protected String` | `name` |
    `static String` | `OUTER_JOIN_INDICATOR` | A prefix or a suffix that can be used in a path component to indicate that an OUTER JOIN should be used when resolving the expression.
    `static String` | `PATH_SEPARATOR` |
    `protected Map<String,​Relationship>` | `relationships` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Entity()` | Creates an unnamed Entity.
    `Entity​(String name)` | Creates a named Entity.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addAttribute​(Attribute attribute)` | Adds new attribute to the entity, setting its parent entity to be this object.
    `void` | `addRelationship​(Relationship relationship)` | Adds new relationship to the entity.
    `void` | `clearAttributes()` |
    `void` | `clearRelationships()` |
    `Relationship` | `getAnyRelationship​(Entity targetEntity)` | Returns a relationship that has a specified entity as a target.
    `Attribute` | `getAttribute​(String attributeName)` | Returns attribute with name `attributeName` or null if no attribute with this name exists.
    `Map<String,​? extends Attribute>` | `getAttributeMap()` | Returns an unmodifiable sorted map of entity attributes.
    `Collection<? extends Attribute>` | `getAttributes()` | Returns an unmodifiable collection of entity attributes.
    `DataMap` | `getDataMap()` |
    `String` | `getName()` | Returns entity name.
    `Object` | `getParent()` | Returns the parent map.
    `Relationship` | `getRelationship​(String relName)` | Returns relationship with name `relName`.
    `Map<String,​? extends Relationship>` | `getRelationshipMap()` | Returns an unmodifiable map of relationships sorted by name.
    `Collection<? extends Relationship>` | `getRelationships()` | Returns an unmodifiable collection of Relationships that exist in this entity.
    `<T extends Attribute,​U extends Relationship> PathComponent<T,​U>` | `lastPathComponent​(Expression path, Map aliasMap)` | Convenience method returning the last component in the path iterator.
    `void` | `removeAttribute​(String attrName)` | Removes an attribute named `attrName`.
    `void` | `removeRelationship​(String relName)` | Removes a relationship named `attrName`.
    `abstract <T extends Attribute,​U extends Relationship> Iterable<PathComponent<T,​U>>` | `resolvePath​(Expression pathExp, Map aliasMap)` | Returns an Iterable over the path components with elements represented as `PathComponent` instances, encapsulating a relationship, an attribute or a subpath alias.
    `Iterator<CayenneMapEntry>` | `resolvePathComponents​(String path)` | Returns an Iterator over the path components that contains a sequence of Attributes and Relationships.
    `abstract Iterator<CayenneMapEntry>` | `resolvePathComponents​(Expression pathExp)` | Processes expression `pathExp` and returns an Iterator of path components that contains a sequence of Attributes and Relationships.
    `void` | `setDataMap​(DataMap dataMap)` | Sets parent DataMap of this entity.
    `void` | `setName​(String name)` |
    `void` | `setParent​(Object parent)` | Stores the parent map.
    `String` | `toString()` |
    `abstract Expression` | `translateToRelatedEntity​(Expression expression, String relationshipPath)` | Translates Expression rooted in this entity to an analogous expression rooted in related entity.
    `void` | `updateAttribute​(Attribute attribute)` |

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

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

    - ### Methods inherited from interface org.apache.cayenne.util.XMLSerializable

      `encodeAsXML`

- - ### Field Detail

    - #### PATH_SEPARATOR

          public static final String PATH_SEPARATOR

      See Also:
        Constant Field Values

    - #### OUTER_JOIN_INDICATOR

          public static final String OUTER_JOIN_INDICATOR

      A prefix or a suffix that can be used in a path component to indicate that an OUTER JOIN should be used when resolving the expression.
      Since:
        3.0
      See Also:
        Constant Field Values

    - #### name

          protected String name

    - #### dataMap

          protected DataMap dataMap

    - #### attributes

          protected final Map<String,​Attribute> attributes

    - #### relationships

          protected final Map<String,​Relationship> relationships

  - ### Constructor Detail

    - #### Entity

          public Entity()

      Creates an unnamed Entity.

    - #### Entity

          public Entity​(String name)

      Creates a named Entity.

  - ### Method Detail

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### getName

          public String getName()

      Returns entity name. Name is a unique identifier of the entity within its DataMap.
      Specified by:
        `getName` in interface `CayenneMapEntry`
      Returns:
        name of this entry.

    - #### setName

          public void setName​(String name)

    - #### getParent

          public Object getParent()

      Description copied from interface: `CayenneMapEntry`
      Returns the parent map.
      Specified by:
        `getParent` in interface `CayenneMapEntry`

    - #### setParent

          public void setParent​(Object parent)

      Description copied from interface: `CayenneMapEntry`
      Stores the parent map.
      Specified by:
        `setParent` in interface `CayenneMapEntry`

    - #### getDataMap

          public DataMap getDataMap()

      Returns:
        parent DataMap of this entity.

    - #### setDataMap

          public void setDataMap​(DataMap dataMap)

      Sets parent DataMap of this entity.

    - #### getAttribute

          public Attribute getAttribute​(String attributeName)

      Returns attribute with name `attributeName` or null if no attribute with this name exists.

    - #### addAttribute

          public void addAttribute​(Attribute attribute)

      Adds new attribute to the entity, setting its parent entity to be this object. If attribute has no name, IllegalArgumentException is thrown.

    - #### removeAttribute

          public void removeAttribute​(String attrName)

      Removes an attribute named `attrName`.

    - #### updateAttribute

          public void updateAttribute​(Attribute attribute)

      Since:
        4.0

    - #### clearAttributes

          public void clearAttributes()

    - #### getRelationship

          public Relationship getRelationship​(String relName)

      Returns relationship with name `relName`. Will return null if no relationship with this name exists in the entity.

    - #### addRelationship

          public void addRelationship​(Relationship relationship)

      Adds new relationship to the entity.

    - #### removeRelationship

          public void removeRelationship​(String relName)

      Removes a relationship named `attrName`.

    - #### clearRelationships

          public void clearRelationships()

    - #### getRelationshipMap

          public Map<String,​? extends Relationship> getRelationshipMap()

      Returns an unmodifiable map of relationships sorted by name.

    - #### getAnyRelationship

          public Relationship getAnyRelationship​(Entity targetEntity)

      Returns a relationship that has a specified entity as a target. If there is more than one relationship for the same target, it is unpredictable which one will be returned.
      Since:
        1.1

    - #### getRelationships

          public Collection<? extends Relationship> getRelationships()

      Returns an unmodifiable collection of Relationships that exist in this entity.

    - #### getAttributeMap

          public Map<String,​? extends Attribute> getAttributeMap()

      Returns an unmodifiable sorted map of entity attributes.

    - #### getAttributes

          public Collection<? extends Attribute> getAttributes()

      Returns an unmodifiable collection of entity attributes.

    - #### translateToRelatedEntity

          public abstract Expression translateToRelatedEntity​(Expression expression,
                                                              String relationshipPath)

      Translates Expression rooted in this entity to an analogous expression rooted in related entity.
      Since:
        1.1

    - #### lastPathComponent

          public <T extends Attribute,​U extends Relationship> PathComponent<T,​U> lastPathComponent​(Expression path,
                                                                                                               Map aliasMap)

      Convenience method returning the last component in the path iterator. If the last component is an alias, it is fully resolved down to the last ObjRelationship.
      Since:
        3.0

    - #### resolvePath

          public abstract <T extends Attribute,​U extends Relationship> Iterable<PathComponent<T,​U>> resolvePath​(Expression pathExp,
                                                                                                                            Map aliasMap)

      Returns an Iterable over the path components with elements represented as `PathComponent` instances, encapsulating a relationship, an attribute or a subpath alias. An optional "aliasMap" parameter is used to resolve subpaths from aliases.

      This method is lazy: if path is invalid and can not be resolved from this entity, this method will still return an Iterator, but an attempt to read the first invalid path component will result in ExpressionException.

      Since:
        3.0

    - #### resolvePathComponents

          public abstract Iterator<CayenneMapEntry> resolvePathComponents​(Expression pathExp)
                                                                   throws ExpressionException

      Processes expression `pathExp` and returns an Iterator of path components that contains a sequence of Attributes and Relationships. Note that if path is invalid and can not be resolved from this entity, this method will still return an Iterator, but an attempt to read the first invalid path component will result in ExpressionException.
      Throws:
        `ExpressionException`

    - #### resolvePathComponents

          public Iterator<CayenneMapEntry> resolvePathComponents​(String path)
                                                          throws ExpressionException

      Returns an Iterator over the path components that contains a sequence of Attributes and Relationships. Note that if path is invalid and can not be resolved from this entity, this method will still return an Iterator, but an attempt to read the first invalid path component will result in ExpressionException.
      Throws:
        `ExpressionException`