# Hierarchy For All Packages

Package Hierarchies:

- javax.persistence,
- javax.persistence.criteria,
- javax.persistence.metamodel,
- javax.persistence.spi,
- org.apache.geronimo.specs.jpa

## Class Hierarchy

- java.lang.Object
  - org.apache.geronimo.osgi.locator.Activator (implements org.osgi.framework.BundleActivator)
    - org.apache.geronimo.specs.jpa.PersistenceActivator (implements org.osgi.framework.BundleActivator, javax.persistence.spi.PersistenceProviderResolver)
  - javax.persistence.Persistence
  - javax.persistence.spi.PersistenceProviderResolverHolder
  - org.apache.geronimo.specs.jpa.PersistenceTracker (implements org.osgi.util.tracker.ServiceTrackerCustomizer<S,T>)
  - java.lang.Throwable (implements java.io.Serializable)
    - java.lang.Exception
      - java.lang.RuntimeException
        - javax.persistence.PersistenceException
          - javax.persistence.EntityExistsException
          - javax.persistence.EntityNotFoundException
          - javax.persistence.LockTimeoutException
          - javax.persistence.NonUniqueResultException
          - javax.persistence.NoResultException
          - javax.persistence.OptimisticLockException
          - javax.persistence.PessimisticLockException
          - javax.persistence.QueryTimeoutException
          - javax.persistence.RollbackException
          - javax.persistence.TransactionRequiredException

## Interface Hierarchy

- javax.persistence.criteria.AbstractQuery<T>
  - javax.persistence.criteria.CriteriaQuery<T>
  - javax.persistence.criteria.Subquery<T> (also extends javax.persistence.criteria.Expression<T>)
- javax.persistence.metamodel.Attribute<X,Y>
  - javax.persistence.metamodel.CollectionAttribute<X,E>
  - javax.persistence.metamodel.ListAttribute<X,E>
  - javax.persistence.metamodel.MapAttribute<X,K,V>
  - javax.persistence.metamodel.PluralAttribute<X,C,E> (also extends javax.persistence.metamodel.Bindable<T>)
    - javax.persistence.metamodel.CollectionAttribute<X,E>
    - javax.persistence.metamodel.ListAttribute<X,E>
    - javax.persistence.metamodel.MapAttribute<X,K,V>
    - javax.persistence.metamodel.SetAttribute<X,E>
  - javax.persistence.metamodel.SetAttribute<X,E>
  - javax.persistence.metamodel.SingularAttribute<X,T> (also extends javax.persistence.metamodel.Bindable<T>)
- javax.persistence.metamodel.Bindable<T>
  - javax.persistence.metamodel.CollectionAttribute<X,E>
  - javax.persistence.metamodel.EntityType<X> (also extends javax.persistence.metamodel.IdentifiableType<X>)
  - javax.persistence.metamodel.ListAttribute<X,E>
  - javax.persistence.metamodel.MapAttribute<X,K,V>
  - javax.persistence.metamodel.PluralAttribute<X,C,E> (also extends javax.persistence.metamodel.Attribute<X,Y>)
    - javax.persistence.metamodel.CollectionAttribute<X,E>
    - javax.persistence.metamodel.ListAttribute<X,E>
    - javax.persistence.metamodel.MapAttribute<X,K,V>
    - javax.persistence.metamodel.SetAttribute<X,E>
  - javax.persistence.metamodel.SetAttribute<X,E>
  - javax.persistence.metamodel.SingularAttribute<X,T> (also extends javax.persistence.metamodel.Attribute<X,Y>)
- javax.persistence.Cache
- javax.persistence.spi.ClassTransformer
- javax.persistence.criteria.CriteriaBuilder
- javax.persistence.EntityManager
- javax.persistence.EntityManagerFactory
- javax.persistence.EntityTransaction
- javax.persistence.criteria.FetchParent<Z,X>
  - javax.persistence.criteria.CollectionJoin<Z,E>
  - javax.persistence.criteria.Fetch<Z,X>
  - javax.persistence.criteria.From<Z,X> (also extends javax.persistence.criteria.Path<X>)
    - javax.persistence.criteria.CollectionJoin<Z,E>
    - javax.persistence.criteria.Join<Z,X>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.PluralJoin<Z,C,E>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.ListJoin<Z,E>
    - javax.persistence.criteria.MapJoin<Z,K,V>
    - javax.persistence.criteria.PluralJoin<Z,C,E>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.Root<X>
    - javax.persistence.criteria.SetJoin<Z,E>
  - javax.persistence.criteria.Join<Z,X>
    - javax.persistence.criteria.CollectionJoin<Z,E>
    - javax.persistence.criteria.ListJoin<Z,E>
    - javax.persistence.criteria.MapJoin<Z,K,V>
    - javax.persistence.criteria.PluralJoin<Z,C,E>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.SetJoin<Z,E>
  - javax.persistence.criteria.ListJoin<Z,E>
  - javax.persistence.criteria.MapJoin<Z,K,V>
  - javax.persistence.criteria.PluralJoin<Z,C,E>
    - javax.persistence.criteria.CollectionJoin<Z,E>
    - javax.persistence.criteria.ListJoin<Z,E>
    - javax.persistence.criteria.MapJoin<Z,K,V>
    - javax.persistence.criteria.SetJoin<Z,E>
  - javax.persistence.criteria.Root<X>
  - javax.persistence.criteria.SetJoin<Z,E>
- javax.persistence.metamodel.Metamodel
- javax.persistence.criteria.Order
- javax.persistence.Parameter<T>
  - javax.persistence.criteria.ParameterExpression<T> (also extends javax.persistence.criteria.Expression<T>)
- javax.persistence.spi.PersistenceProvider
- javax.persistence.spi.PersistenceProviderResolver
- javax.persistence.spi.PersistenceUnitInfo
- javax.persistence.PersistenceUtil
  - javax.persistence.PersistenceUnitUtil
- javax.persistence.spi.ProviderUtil
- javax.persistence.Query
  - javax.persistence.TypedQuery<X>
- javax.persistence.Tuple
- javax.persistence.TupleElement<X>
  - javax.persistence.criteria.CollectionJoin<Z,E>
  - javax.persistence.criteria.CompoundSelection<X>
  - javax.persistence.criteria.CriteriaBuilder.Case<R>
  - javax.persistence.criteria.CriteriaBuilder.Coalesce<T>
  - javax.persistence.criteria.CriteriaBuilder.In<T>
  - javax.persistence.criteria.CriteriaBuilder.SimpleCase<C,R>
  - javax.persistence.criteria.Expression<T>
    - javax.persistence.criteria.CollectionJoin<Z,E>
    - javax.persistence.criteria.CriteriaBuilder.Case<R>
    - javax.persistence.criteria.CriteriaBuilder.Coalesce<T>
    - javax.persistence.criteria.CriteriaBuilder.In<T>
    - javax.persistence.criteria.CriteriaBuilder.SimpleCase<C,R>
    - javax.persistence.criteria.From<Z,X> (also extends javax.persistence.criteria.FetchParent<Z,X>, javax.persistence.criteria.Path<X>)
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.Join<Z,X>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.PluralJoin<Z,C,E>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.PluralJoin<Z,C,E>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.Root<X>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.Join<Z,X>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.PluralJoin<Z,C,E>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.ListJoin<Z,E>
    - javax.persistence.criteria.MapJoin<Z,K,V>
    - javax.persistence.criteria.ParameterExpression<T> (also extends javax.persistence.Parameter<T>)
    - javax.persistence.criteria.Path<X>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.From<Z,X> (also extends javax.persistence.criteria.FetchParent<Z,X>)
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.Join<Z,X>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.PluralJoin<Z,C,E>
            - javax.persistence.criteria.CollectionJoin<Z,E>
            - javax.persistence.criteria.ListJoin<Z,E>
            - javax.persistence.criteria.MapJoin<Z,K,V>
            - javax.persistence.criteria.SetJoin<Z,E>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.PluralJoin<Z,C,E>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.Root<X>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.Join<Z,X>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.PluralJoin<Z,C,E>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.PluralJoin<Z,C,E>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.Root<X>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.PluralJoin<Z,C,E>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.Predicate
      - javax.persistence.criteria.CriteriaBuilder.In<T>
    - javax.persistence.criteria.Root<X>
    - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.Subquery<T> (also extends javax.persistence.criteria.AbstractQuery<T>)
  - javax.persistence.criteria.From<Z,X> (also extends javax.persistence.criteria.FetchParent<Z,X>, javax.persistence.criteria.Path<X>)
    - javax.persistence.criteria.CollectionJoin<Z,E>
    - javax.persistence.criteria.Join<Z,X>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.PluralJoin<Z,C,E>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.ListJoin<Z,E>
    - javax.persistence.criteria.MapJoin<Z,K,V>
    - javax.persistence.criteria.PluralJoin<Z,C,E>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.Root<X>
    - javax.persistence.criteria.SetJoin<Z,E>
  - javax.persistence.criteria.Join<Z,X>
    - javax.persistence.criteria.CollectionJoin<Z,E>
    - javax.persistence.criteria.ListJoin<Z,E>
    - javax.persistence.criteria.MapJoin<Z,K,V>
    - javax.persistence.criteria.PluralJoin<Z,C,E>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.SetJoin<Z,E>
  - javax.persistence.criteria.ListJoin<Z,E>
  - javax.persistence.criteria.MapJoin<Z,K,V>
  - javax.persistence.criteria.ParameterExpression<T> (also extends javax.persistence.criteria.Expression<T>, javax.persistence.Parameter<T>)
  - javax.persistence.criteria.Path<X>
    - javax.persistence.criteria.CollectionJoin<Z,E>
    - javax.persistence.criteria.From<Z,X> (also extends javax.persistence.criteria.FetchParent<Z,X>)
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.Join<Z,X>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.PluralJoin<Z,C,E>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.PluralJoin<Z,C,E>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.Root<X>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.Join<Z,X>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.PluralJoin<Z,C,E>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.ListJoin<Z,E>
    - javax.persistence.criteria.MapJoin<Z,K,V>
    - javax.persistence.criteria.PluralJoin<Z,C,E>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.Root<X>
    - javax.persistence.criteria.SetJoin<Z,E>
  - javax.persistence.criteria.PluralJoin<Z,C,E>
    - javax.persistence.criteria.CollectionJoin<Z,E>
    - javax.persistence.criteria.ListJoin<Z,E>
    - javax.persistence.criteria.MapJoin<Z,K,V>
    - javax.persistence.criteria.SetJoin<Z,E>
  - javax.persistence.criteria.Predicate
    - javax.persistence.criteria.CriteriaBuilder.In<T>
  - javax.persistence.criteria.Root<X>
  - javax.persistence.criteria.Selection<X>
    - javax.persistence.criteria.CollectionJoin<Z,E>
    - javax.persistence.criteria.CompoundSelection<X>
    - javax.persistence.criteria.CriteriaBuilder.Case<R>
    - javax.persistence.criteria.CriteriaBuilder.Coalesce<T>
    - javax.persistence.criteria.CriteriaBuilder.In<T>
    - javax.persistence.criteria.CriteriaBuilder.SimpleCase<C,R>
    - javax.persistence.criteria.Expression<T>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.CriteriaBuilder.Case<R>
      - javax.persistence.criteria.CriteriaBuilder.Coalesce<T>
      - javax.persistence.criteria.CriteriaBuilder.In<T>
      - javax.persistence.criteria.CriteriaBuilder.SimpleCase<C,R>
      - javax.persistence.criteria.From<Z,X> (also extends javax.persistence.criteria.FetchParent<Z,X>, javax.persistence.criteria.Path<X>)
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.Join<Z,X>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.PluralJoin<Z,C,E>
            - javax.persistence.criteria.CollectionJoin<Z,E>
            - javax.persistence.criteria.ListJoin<Z,E>
            - javax.persistence.criteria.MapJoin<Z,K,V>
            - javax.persistence.criteria.SetJoin<Z,E>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.PluralJoin<Z,C,E>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.Root<X>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.Join<Z,X>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.PluralJoin<Z,C,E>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.ParameterExpression<T> (also extends javax.persistence.Parameter<T>)
      - javax.persistence.criteria.Path<X>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.From<Z,X> (also extends javax.persistence.criteria.FetchParent<Z,X>)
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.Join<Z,X>
            - javax.persistence.criteria.CollectionJoin<Z,E>
            - javax.persistence.criteria.ListJoin<Z,E>
            - javax.persistence.criteria.MapJoin<Z,K,V>
            - javax.persistence.criteria.PluralJoin<Z,C,E>
              - javax.persistence.criteria.CollectionJoin<Z,E>
              - javax.persistence.criteria.ListJoin<Z,E>
              - javax.persistence.criteria.MapJoin<Z,K,V>
              - javax.persistence.criteria.SetJoin<Z,E>
            - javax.persistence.criteria.SetJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.PluralJoin<Z,C,E>
            - javax.persistence.criteria.CollectionJoin<Z,E>
            - javax.persistence.criteria.ListJoin<Z,E>
            - javax.persistence.criteria.MapJoin<Z,K,V>
            - javax.persistence.criteria.SetJoin<Z,E>
          - javax.persistence.criteria.Root<X>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.Join<Z,X>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.PluralJoin<Z,C,E>
            - javax.persistence.criteria.CollectionJoin<Z,E>
            - javax.persistence.criteria.ListJoin<Z,E>
            - javax.persistence.criteria.MapJoin<Z,K,V>
            - javax.persistence.criteria.SetJoin<Z,E>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.PluralJoin<Z,C,E>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.Root<X>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.PluralJoin<Z,C,E>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.Predicate
        - javax.persistence.criteria.CriteriaBuilder.In<T>
      - javax.persistence.criteria.Root<X>
      - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.Subquery<T> (also extends javax.persistence.criteria.AbstractQuery<T>)
    - javax.persistence.criteria.From<Z,X> (also extends javax.persistence.criteria.FetchParent<Z,X>, javax.persistence.criteria.Path<X>)
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.Join<Z,X>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.PluralJoin<Z,C,E>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.PluralJoin<Z,C,E>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.Root<X>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.Join<Z,X>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.PluralJoin<Z,C,E>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.ListJoin<Z,E>
    - javax.persistence.criteria.MapJoin<Z,K,V>
    - javax.persistence.criteria.ParameterExpression<T> (also extends javax.persistence.criteria.Expression<T>, javax.persistence.Parameter<T>)
    - javax.persistence.criteria.Path<X>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.From<Z,X> (also extends javax.persistence.criteria.FetchParent<Z,X>)
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.Join<Z,X>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.PluralJoin<Z,C,E>
            - javax.persistence.criteria.CollectionJoin<Z,E>
            - javax.persistence.criteria.ListJoin<Z,E>
            - javax.persistence.criteria.MapJoin<Z,K,V>
            - javax.persistence.criteria.SetJoin<Z,E>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.PluralJoin<Z,C,E>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.Root<X>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.Join<Z,X>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.PluralJoin<Z,C,E>
          - javax.persistence.criteria.CollectionJoin<Z,E>
          - javax.persistence.criteria.ListJoin<Z,E>
          - javax.persistence.criteria.MapJoin<Z,K,V>
          - javax.persistence.criteria.SetJoin<Z,E>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.PluralJoin<Z,C,E>
        - javax.persistence.criteria.CollectionJoin<Z,E>
        - javax.persistence.criteria.ListJoin<Z,E>
        - javax.persistence.criteria.MapJoin<Z,K,V>
        - javax.persistence.criteria.SetJoin<Z,E>
      - javax.persistence.criteria.Root<X>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.PluralJoin<Z,C,E>
      - javax.persistence.criteria.CollectionJoin<Z,E>
      - javax.persistence.criteria.ListJoin<Z,E>
      - javax.persistence.criteria.MapJoin<Z,K,V>
      - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.Predicate
      - javax.persistence.criteria.CriteriaBuilder.In<T>
    - javax.persistence.criteria.Root<X>
    - javax.persistence.criteria.SetJoin<Z,E>
    - javax.persistence.criteria.Subquery<T> (also extends javax.persistence.criteria.AbstractQuery<T>, javax.persistence.criteria.Expression<T>)
  - javax.persistence.criteria.SetJoin<Z,E>
  - javax.persistence.criteria.Subquery<T> (also extends javax.persistence.criteria.AbstractQuery<T>, javax.persistence.criteria.Expression<T>)
- javax.persistence.metamodel.Type<X>
  - javax.persistence.metamodel.BasicType<X>
  - javax.persistence.metamodel.EmbeddableType<X>
  - javax.persistence.metamodel.EntityType<X> (also extends javax.persistence.metamodel.Bindable<T>, javax.persistence.metamodel.IdentifiableType<X>)
  - javax.persistence.metamodel.IdentifiableType<X>
    - javax.persistence.metamodel.EntityType<X> (also extends javax.persistence.metamodel.Bindable<T>)
    - javax.persistence.metamodel.MappedSuperclassType<X>
  - javax.persistence.metamodel.ManagedType<X>
    - javax.persistence.metamodel.EmbeddableType<X>
    - javax.persistence.metamodel.EntityType<X> (also extends javax.persistence.metamodel.Bindable<T>, javax.persistence.metamodel.IdentifiableType<X>)
    - javax.persistence.metamodel.IdentifiableType<X>
      - javax.persistence.metamodel.EntityType<X> (also extends javax.persistence.metamodel.Bindable<T>)
      - javax.persistence.metamodel.MappedSuperclassType<X>
    - javax.persistence.metamodel.MappedSuperclassType<X>
  - javax.persistence.metamodel.MappedSuperclassType<X>

## Annotation Type Hierarchy

- javax.persistence.Access (implements java.lang.annotation.Annotation)
- javax.persistence.AssociationOverride (implements java.lang.annotation.Annotation)
- javax.persistence.AssociationOverrides (implements java.lang.annotation.Annotation)
- javax.persistence.AttributeOverride (implements java.lang.annotation.Annotation)
- javax.persistence.AttributeOverrides (implements java.lang.annotation.Annotation)
- javax.persistence.Basic (implements java.lang.annotation.Annotation)
- javax.persistence.Cacheable (implements java.lang.annotation.Annotation)
- javax.persistence.CollectionTable (implements java.lang.annotation.Annotation)
- javax.persistence.Column (implements java.lang.annotation.Annotation)
- javax.persistence.ColumnResult (implements java.lang.annotation.Annotation)
- javax.persistence.DiscriminatorColumn (implements java.lang.annotation.Annotation)
- javax.persistence.DiscriminatorValue (implements java.lang.annotation.Annotation)
- javax.persistence.ElementCollection (implements java.lang.annotation.Annotation)
- javax.persistence.Embeddable (implements java.lang.annotation.Annotation)
- javax.persistence.Embedded (implements java.lang.annotation.Annotation)
- javax.persistence.EmbeddedId (implements java.lang.annotation.Annotation)
- javax.persistence.Entity (implements java.lang.annotation.Annotation)
- javax.persistence.EntityListeners (implements java.lang.annotation.Annotation)
- javax.persistence.EntityResult (implements java.lang.annotation.Annotation)
- javax.persistence.Enumerated (implements java.lang.annotation.Annotation)
- javax.persistence.ExcludeDefaultListeners (implements java.lang.annotation.Annotation)
- javax.persistence.ExcludeSuperclassListeners (implements java.lang.annotation.Annotation)
- javax.persistence.FieldResult (implements java.lang.annotation.Annotation)
- javax.persistence.GeneratedValue (implements java.lang.annotation.Annotation)
- javax.persistence.Id (implements java.lang.annotation.Annotation)
- javax.persistence.IdClass (implements java.lang.annotation.Annotation)
- javax.persistence.Inheritance (implements java.lang.annotation.Annotation)
- javax.persistence.JoinColumn (implements java.lang.annotation.Annotation)
- javax.persistence.JoinColumns (implements java.lang.annotation.Annotation)
- javax.persistence.JoinTable (implements java.lang.annotation.Annotation)
- javax.persistence.Lob (implements java.lang.annotation.Annotation)
- javax.persistence.ManyToMany (implements java.lang.annotation.Annotation)
- javax.persistence.ManyToOne (implements java.lang.annotation.Annotation)
- javax.persistence.MapKey (implements java.lang.annotation.Annotation)
- javax.persistence.MapKeyClass (implements java.lang.annotation.Annotation)
- javax.persistence.MapKeyColumn (implements java.lang.annotation.Annotation)
- javax.persistence.MapKeyEnumerated (implements java.lang.annotation.Annotation)
- javax.persistence.MapKeyJoinColumn (implements java.lang.annotation.Annotation)
- javax.persistence.MapKeyJoinColumns (implements java.lang.annotation.Annotation)
- javax.persistence.MapKeyTemporal (implements java.lang.annotation.Annotation)
- javax.persistence.MappedSuperclass (implements java.lang.annotation.Annotation)
- javax.persistence.MapsId (implements java.lang.annotation.Annotation)
- javax.persistence.NamedNativeQueries (implements java.lang.annotation.Annotation)
- javax.persistence.NamedNativeQuery (implements java.lang.annotation.Annotation)
- javax.persistence.NamedQueries (implements java.lang.annotation.Annotation)
- javax.persistence.NamedQuery (implements java.lang.annotation.Annotation)
- javax.persistence.OneToMany (implements java.lang.annotation.Annotation)
- javax.persistence.OneToOne (implements java.lang.annotation.Annotation)
- javax.persistence.OrderBy (implements java.lang.annotation.Annotation)
- javax.persistence.OrderColumn (implements java.lang.annotation.Annotation)
- javax.persistence.PersistenceContext (implements java.lang.annotation.Annotation)
- javax.persistence.PersistenceContexts (implements java.lang.annotation.Annotation)
- javax.persistence.PersistenceProperty (implements java.lang.annotation.Annotation)
- javax.persistence.PersistenceUnit (implements java.lang.annotation.Annotation)
- javax.persistence.PersistenceUnits (implements java.lang.annotation.Annotation)
- javax.persistence.PostLoad (implements java.lang.annotation.Annotation)
- javax.persistence.PostPersist (implements java.lang.annotation.Annotation)
- javax.persistence.PostRemove (implements java.lang.annotation.Annotation)
- javax.persistence.PostUpdate (implements java.lang.annotation.Annotation)
- javax.persistence.PrePersist (implements java.lang.annotation.Annotation)
- javax.persistence.PreRemove (implements java.lang.annotation.Annotation)
- javax.persistence.PreUpdate (implements java.lang.annotation.Annotation)
- javax.persistence.PrimaryKeyJoinColumn (implements java.lang.annotation.Annotation)
- javax.persistence.PrimaryKeyJoinColumns (implements java.lang.annotation.Annotation)
- javax.persistence.QueryHint (implements java.lang.annotation.Annotation)
- javax.persistence.SecondaryTable (implements java.lang.annotation.Annotation)
- javax.persistence.SecondaryTables (implements java.lang.annotation.Annotation)
- javax.persistence.SequenceGenerator (implements java.lang.annotation.Annotation)
- javax.persistence.SqlResultSetMapping (implements java.lang.annotation.Annotation)
- javax.persistence.SqlResultSetMappings (implements java.lang.annotation.Annotation)
- javax.persistence.metamodel.StaticMetamodel (implements java.lang.annotation.Annotation)
- javax.persistence.Table (implements java.lang.annotation.Annotation)
- javax.persistence.TableGenerator (implements java.lang.annotation.Annotation)
- javax.persistence.Temporal (implements java.lang.annotation.Annotation)
- javax.persistence.Transient (implements java.lang.annotation.Annotation)
- javax.persistence.UniqueConstraint (implements java.lang.annotation.Annotation)
- javax.persistence.Version (implements java.lang.annotation.Annotation)

## Enum Hierarchy

- java.lang.Object
  - java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable)
    - javax.persistence.AccessType
    - javax.persistence.metamodel.Attribute.PersistentAttributeType
    - javax.persistence.metamodel.Bindable.BindableType
    - javax.persistence.CacheRetrieveMode
    - javax.persistence.CacheStoreMode
    - javax.persistence.CascadeType
    - javax.persistence.criteria.CriteriaBuilder.Trimspec
    - javax.persistence.DiscriminatorType
    - javax.persistence.EnumType
    - javax.persistence.FetchType
    - javax.persistence.FlushModeType
    - javax.persistence.GenerationType
    - javax.persistence.InheritanceType
    - javax.persistence.criteria.JoinType
    - javax.persistence.spi.LoadState
    - javax.persistence.LockModeType
    - javax.persistence.PersistenceContextType
    - javax.persistence.spi.PersistenceUnitTransactionType
    - javax.persistence.PessimisticLockScope
    - javax.persistence.metamodel.PluralAttribute.CollectionType
    - javax.persistence.criteria.Predicate.BooleanOperator
    - javax.persistence.SharedCacheMode
    - javax.persistence.TemporalType
    - javax.persistence.metamodel.Type.PersistenceType
    - javax.persistence.ValidationMode