# Class EntityProperty<E extends Persistent>

java.lang.Object
org.apache.cayenne.exp.property.BaseProperty<E>
org.apache.cayenne.exp.property.EntityProperty<E>

All Implemented Interfaces:
  `PathProperty<E>, Property<E>, RelationshipProperty<E>`

Direct Known Subclasses:
  `SelfProperty`

public class EntityProperty<E extends Persistent> extends BaseProperty<E> implements RelationshipProperty<E>
Property that represents to-one relationships.

Usage examples in where clause:

    ObjectSelect.query(Paintings.class)
         .where(Painting.TO_ARTIST.dot(Artist.ARTIST_NAME).eq("Pablo Picasso"));

Usage examples in column select, in this case full Artist entity will be returned as the result:

    ObjectSelect
         .columnQuery(Paintings.class, Painting.PAINTING_TITLE, Painting.TO_ARTIST);

Since:
  4.2
See Also:
  - `org.apache.cayenne.exp.property`

- ## Field Summary

  ### Fields inherited from class BaseProperty

  `expressionSupplier, path, type`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `EntityProperty(CayennePath path, Expression expression, Class<E> type)`
  Constructs a new property with the given name and expression

- ## Method Summary

  Modifier and Type
  Method
  Description
  `EntityProperty<E>`
  `alias(String alias)`
  Creates alias with different name for this property
  `EntityProperty<E>`
  `enclosing()`
  This operator allows to access properties of the enclosing query from the subquery.
  `Expression`
  `eqId(Object id)`
  `Expression`
  `idsIn(Object... ids)`
  `Expression`
  `idsInCollection(Collection<?> ids)`
  `Expression`
  `idsNotIn(Object... ids)`
  `Expression`
  `idsNotInCollection(Collection<?> ids)`
  `Expression`
  `inId(Object firstId, Object... moreIds)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  in favour of `idsIn(Object...)`
  `Expression`
  `inId(Collection<Object> ids)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  in favour of `idsInCollection(Collection)`
  `Expression`
  `neqId(Object id)`
  `Expression`
  `ninId(Object firstId, Object... moreIds)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  in favour of `idsNotIn(Object...)`
  `Expression`
  `ninId(Collection<Object> ids)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  in favour of `idsNotInCollection(Collection)`
  `EntityProperty<E>`
  `outer()`
  Returns a version of this property that represents an OUTER join.

  ### Methods inherited from class BaseProperty

  `aggregate, asc, ascInsensitive, ascInsensitives, ascs, count, countDistinct, desc, descInsensitive, descInsensitives, descs, eq, eq, equals, function, function, getAlias, getExpression, getFrom, getFromAll, getName, getPath, getType, hashCode, in, in, in, isFalse, isNotNull, isNull, isTrue, ne, ne, nin, nin, nin, operator, operator, setIn, setInAll`

  ### Methods inherited from class Object

  `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface PathProperty

  `dot, dot, dot, dot, dot`

  ### Methods inherited from interface Property

  `getAlias, getExpression, getName, getPath, getType`

  ### Methods inherited from interface RelationshipProperty

  `disjoint, disjointById, dot, dot, dot, dot, dot, dot, dot, exists, joint, notExists`

- ## Constructor Details

  - ### EntityProperty

    protected EntityProperty(CayennePath path, Expression expression, Class<E> type)
    Constructs a new property with the given name and expression
    Parameters:
      `path` - of the property (will be used as alias for the expression)
      `expression` - expression for property
      `type` - of the property
    See Also:
      - `PropertyFactory.createBase(String, Expression, Class)`

- ## Method Details

  - ### eqId

    public Expression eqId(Object id)

  - ### inId

    @Deprecated(since="5.0", forRemoval=true) public Expression inId(Collection<Object> ids)
    Deprecated, for removal: This API element is subject to removal in a future version.
    in favour of `idsInCollection(Collection)`

  - ### idsInCollection

    public Expression idsInCollection(Collection<?> ids)
    Parameters:
      `ids` - to use for "IN" expression
    Returns:
      `IN` expression comparing path represented by this property with provided ids
    Since:
      5.0

  - ### inId

    @Deprecated(since="5.0", forRemoval=true) public Expression inId(Object firstId, Object... moreIds)
    Deprecated, for removal: This API element is subject to removal in a future version.
    in favour of `idsIn(Object...)`

  - ### idsIn

    public Expression idsIn(Object... ids)
    Parameters:
      `ids` - to use for "IN" expression
    Returns:
      `IN` expression comparing path represented by this property with provided ids
    Since:
      5.0

  - ### neqId

    public Expression neqId(Object id)

  - ### ninId

    @Deprecated(since="5.0", forRemoval=true) public Expression ninId(Collection<Object> ids)
    Deprecated, for removal: This API element is subject to removal in a future version.
    in favour of `idsNotInCollection(Collection)`

  - ### idsNotInCollection

    public Expression idsNotInCollection(Collection<?> ids)
    Parameters:
      `ids` - collection of IDs to use for "`NOT IN`" expression
    Returns:
      `NOT IN` expression comparing path represented by this property with provided IDs
    Since:
      5.0

  - ### ninId

    @Deprecated(since="5.0", forRemoval=true) public Expression ninId(Object firstId, Object... moreIds)
    Deprecated, for removal: This API element is subject to removal in a future version.
    in favour of `idsNotIn(Object...)`

  - ### idsNotIn

    public Expression idsNotIn(Object... ids)
    Parameters:
      `ids` - to use for "`NOT IN`" expression
    Returns:
      `NOT IN` expression comparing path represented by this property with provided ids
    Since:
      5.0

  - ### alias

    public EntityProperty<E> alias(String alias)
    Creates alias with different name for this property
    Overrides:
      `alias` in class `BaseProperty<E extends Persistent>`

  - ### outer

    public EntityProperty<E> outer()
    Returns a version of this property that represents an OUTER join.
    Specified by:
      `outer` in interface `RelationshipProperty<E extends Persistent>`

  - ### enclosing

    public EntityProperty<E> enclosing()
    Description copied from class: `BaseProperty`
    This operator allows to access properties of the enclosing query from the subquery. It allows multiple nesting levels to access a corresponding query in case of multiple levels of subqueries. Example:

        ObjectSelect.query(Artist.class)
                        .where(ExpressionFactory.notExists(ObjectSelect.query(Painting.class)
                                .where(Painting.TO_ARTIST.eq(Artist.ARTIST_ID_PK_PROPERTY.enclosing()))))

    Overrides:
      `enclosing` in class `BaseProperty<E extends Persistent>`
    Returns:
      property that will be translated relative to parent query