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:
2.0
  • Method Details

    • 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<? super 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<? super 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(jakarta.persistence.metamodel.SingularAttribute<? super X, Y>) 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