javax.persistence.criteria

## Interface Path<X>

Type Parameters:
  `X` - the type referenced by the path

All Superinterfaces:
  Expression<X>, Selection<X>, TupleElement<X>

All Known Subinterfaces:
  CollectionJoin<Z,E>, From<Z,X>, Join<Z,X>, ListJoin<Z,E>, MapJoin<Z,K,V>, PluralJoin<Z,C,E>, Root<X>, SetJoin<Z,E>

    public interface Path<X>
    extends Expression<X>

Represents a simple or compound attribute path from a bound type or collection, and is a "primitive" expression.

Since:
  Java Persistence 2.0

### Method Summary

All Methods Instance Methods Abstract Methods
`<K,V,M extends java.util.Map<K,V>> Expression<M>` `get(MapAttribute<X,K,V> map)` Create a path corresponding to the referenced map-valued attribute.
`<E,C extends java.util.Collection<E>> Expression<C>` `get(PluralAttribute<X,C,E> collection)` Create a path corresponding to the referenced collection-valued attribute.
`<Y> Path<Y>` `get(SingularAttribute<? super X,Y> attribute)` Create a path corresponding to the referenced single-valued attribute.
`<Y> Path<Y>` `get(java.lang.String attributeName)` Create a path corresponding to the referenced attribute.
`Bindable<X>` `getModel()` Return the bindable object that corresponds to the path expression.
`Path<?>` `getParentPath()` Return the parent "node" in the path or null if no parent.
`Expression<java.lang.Class<? extends X>>` `type()` Create an expression corresponding to the type of the path.

### Methods inherited from interface javax.persistence.criteria.Expression

`as, in, in, in, in, isNotNull, isNull`

### Methods inherited from interface javax.persistence.criteria.Selection

`alias, getCompoundSelectionItems, isCompoundSelection`

### Methods inherited from interface javax.persistence.TupleElement

`getAlias, getJavaType`

### Method Detail

#### getModel

    Bindable<X> getModel()

Return the bindable object that corresponds to the path expression.

Returns:
  bindable object corresponding to the path

#### getParentPath

    Path<?> getParentPath()

Return the parent "node" in the path or null if no parent.

Returns:
  parent

#### get

    <Y> Path<Y> get(SingularAttribute<? super X,Y> attribute)

Create a path corresponding to the referenced single-valued attribute.

Parameters:
  `attribute` - single-valued attribute
Returns:
  path corresponding to the referenced attribute

#### get

    <E,C extends java.util.Collection<E>> Expression<C> get(PluralAttribute<X,C,E> collection)

Create a path corresponding to the referenced collection-valued attribute.

Parameters:
  `collection` - collection-valued attribute
Returns:
  expression corresponding to the referenced attribute

#### get

    <K,V,M extends java.util.Map<K,V>> Expression<M> get(MapAttribute<X,K,V> map)

Create a path corresponding to the referenced map-valued attribute.

Parameters:
  `map` - map-valued attribute
Returns:
  expression corresponding to the referenced attribute

#### type

    Expression<java.lang.Class<? extends X>> type()

Create an expression corresponding to the type of the path.

Returns:
  expression corresponding to the type of the path

#### get

    <Y> Path<Y> get(java.lang.String attributeName)

Create a path corresponding to the referenced attribute.

Note: Applications using the string-based API may need to specify the type resulting from the `get` operation in order to avoid the use of `Path` variables.

         For example:

         CriteriaQuery<Person> q = cb.createQuery(Person.class);
         Root<Person> p = q.from(Person.class);
         q.select(p)
          .where(cb.isMember("joe",
                             p.<Set<String>>get("nicknames")));

         rather than:

         CriteriaQuery<Person> q = cb.createQuery(Person.class);
         Root<Person> p = q.from(Person.class);
         Path<Set<String>> nicknames = p.get("nicknames");
         q.select(p)
          .where(cb.isMember("joe", nicknames));

Parameters:
  `attributeName` - name of the attribute
Returns:
  path corresponding to the referenced attribute
Throws:
  `java.lang.IllegalStateException` - if invoked on a path that corresponds to a basic type
  `java.lang.IllegalArgumentException` - if attribute of the given name does not otherwise exist