# Class SelfProperty<E extends Persistent>

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

Type Parameters:
  `E` - type of the property

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

public class SelfProperty<E extends Persistent> extends EntityProperty<E>
Property that represents root entity

Usage example: ``

    List<Object[]> result = Artist.SELF
        .columnQuery(Artist.SELF, Artist.PAINTING_ARRAY.count())
        .select(context);

Since:
  5.0

- ## Field Summary

  ### Fields inherited from class BaseProperty

  `expressionSupplier, path, type`

- ## Constructor Summary

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `ColumnSelect<Object[]>`
  `columnQuery(Property<?>... properties)`
  `<T> ColumnSelect<T>`
  `columnQuery(Property<T> property)`
  `Expression`
  `exists(Expression where)`
  `Expression`
  `notExists(Expression where)`
  `ObjectSelect<E>`
  `query()`
  `ObjectSelect<E>`
  `query(Expression where)`

  ### Methods inherited from class EntityProperty

  `alias, enclosing, eqId, idsIn, idsInCollection, idsNotIn, idsNotInCollection, inId, inId, neqId, ninId, ninId, outer`

  ### 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

  - ### SelfProperty

    protected SelfProperty(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

  - ### exists

    public Expression exists(Expression where)

  - ### notExists

    public Expression notExists(Expression where)

  - ### query

    public ObjectSelect<E> query(Expression where)

  - ### query

    public ObjectSelect<E> query()

  - ### columnQuery

    public <T> ColumnSelect<T> columnQuery(Property<T> property)

  - ### columnQuery

    public ColumnSelect<Object[]> columnQuery(Property<?>... properties)