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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `<K,V,M extends Map<K,V>> Expression<M>` | `get(MapAttribute<X,K,V> map)` Create a path corresponding to the referenced map-valued attribute.
    `<E,C extends 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(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<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 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 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<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(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:
        `IllegalStateException` - if invoked on a path that corresponds to a basic type
        `IllegalArgumentException` - if attribute of the given name does not otherwise exist

Copyright © 1996-2013, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.