# Interface RelationshipProperty<E>

All Superinterfaces:
  `PathProperty<E>, Property<E>`

All Known Implementing Classes:
  `CollectionProperty, EntityProperty, ListProperty, MapProperty, SelfProperty, SetProperty`

public interface RelationshipProperty<E> extends PathProperty<E>
Interface (or "Trait") that provides basic functionality for all types of relationships.

Provides "dot", prefetch and "outer" functionality.

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `default PrefetchTreeNode`
  `disjoint()`
  Returns a prefetch tree that follows this property path, potentially spanning a number of phantom nodes, and having a single leaf with "disjoint" prefetch semantics.
  `default PrefetchTreeNode`
  `disjointById()`
  Returns a prefetch tree that follows this property path, potentially spanning a number of phantom nodes, and having a single leaf with "disjoint by id" prefetch semantics.
  `default <T> BaseIdProperty<T>`
  `dot(BaseIdProperty<T> property)`
  Constructs a new property path by appending the argument to the existing property separated by a dot.
  `default <T extends EmbeddableObject>
  EmbeddableProperty<T>`
  `dot(EmbeddableProperty<T> property)`
  Constructs a new property path by appending the argument to the existing property separated by a dot.
  `default <T extends Persistent>
  EntityProperty<T>`
  `dot(EntityProperty<T> property)`
  Constructs a new property path by appending the argument to the existing property separated by a dot.
  `default <T extends Persistent>
  ListProperty<T>`
  `dot(ListProperty<T> property)`
  Constructs a new property path by appending the argument to the existing property separated by a dot.
  `default <K, V extends Persistent>
  MapProperty<K,V>`
  `dot(MapProperty<K,V> property)`
  Constructs a new property path by appending the argument to the existing property separated by a dot.
  `default <T extends Number>
  NumericIdProperty<T>`
  `dot(NumericIdProperty<T> property)`
  Constructs a new property path by appending the argument to the existing property separated by a dot.
  `default <T extends Persistent>
  SetProperty<T>`
  `dot(SetProperty<T> property)`
  Constructs a new property path by appending the argument to the existing property separated by a dot.
  `default Expression`
  `exists()`
  `default PrefetchTreeNode`
  `joint()`
  Returns a prefetch tree that follows this property path, potentially spanning a number of phantom nodes, and having a single leaf with "joint" prefetch semantics.
  `default Expression`
  `notExists()`
  `BaseProperty<E>`
  `outer()`
  Returns a version of this property that represents an OUTER join.

  ### Methods inherited from interface PathProperty

  `dot, dot, dot, dot, dot`

  ### Methods inherited from interface Property

  `getAlias, getExpression, getName, getPath, getType`

- ## Method Details

  - ### outer

    BaseProperty<E> outer()
    Returns a version of this property that represents an OUTER join.

  - ### joint

    default PrefetchTreeNode joint()
    Returns a prefetch tree that follows this property path, potentially spanning a number of phantom nodes, and having a single leaf with "joint" prefetch semantics.

  - ### disjoint

    default PrefetchTreeNode disjoint()
    Returns a prefetch tree that follows this property path, potentially spanning a number of phantom nodes, and having a single leaf with "disjoint" prefetch semantics.

  - ### disjointById

    default PrefetchTreeNode disjointById()
    Returns a prefetch tree that follows this property path, potentially spanning a number of phantom nodes, and having a single leaf with "disjoint by id" prefetch semantics.

  - ### dot

    default <T> BaseIdProperty<T> dot(BaseIdProperty<T> property)
    Constructs a new property path by appending the argument to the existing property separated by a dot.
    Parameters:
      `property` - to append to path
    Returns:
      a newly created Property object.

  - ### dot

    default <T extends Number> NumericIdProperty<T> dot(NumericIdProperty<T> property)
    Constructs a new property path by appending the argument to the existing property separated by a dot.
    Parameters:
      `property` - to append to path
    Returns:
      a newly created Property object.

  - ### dot

    default <T extends Persistent> EntityProperty<T> dot(EntityProperty<T> property)
    Constructs a new property path by appending the argument to the existing property separated by a dot.
    Parameters:
      `property` - to append to path
    Returns:
      a newly created Property object.

  - ### dot

    default <T extends Persistent> ListProperty<T> dot(ListProperty<T> property)
    Constructs a new property path by appending the argument to the existing property separated by a dot.
    Parameters:
      `property` - to append to path
    Returns:
      a newly created Property object.

  - ### dot

    default <T extends Persistent> SetProperty<T> dot(SetProperty<T> property)
    Constructs a new property path by appending the argument to the existing property separated by a dot.
    Parameters:
      `property` - to append to path
    Returns:
      a newly created Property object.

  - ### dot

    default <K, V extends Persistent> MapProperty<K,V> dot(MapProperty<K,V> property)
    Constructs a new property path by appending the argument to the existing property separated by a dot.
    Parameters:
      `property` - to append to path
    Returns:
      a newly created Property object.

  - ### dot

    default <T extends EmbeddableObject> EmbeddableProperty<T> dot(EmbeddableProperty<T> property)
    Constructs a new property path by appending the argument to the existing property separated by a dot.
    Parameters:
      `property` - to append to path
    Returns:
      a newly created Property object.

  - ### exists

    default Expression exists()

  - ### notExists

    default Expression notExists()