EclipseLink 2.4.2, build 'v20130514-5956486' API Reference

org.eclipse.persistence.jpa.jpql
Class FromSubqueryResolver

java.lang.Object
  extended by org.eclipse.persistence.jpa.jpql.Resolver
      extended by org.eclipse.persistence.jpa.jpql.FromSubqueryResolver

public class FromSubqueryResolver
extends Resolver

This Resolver wraps a subquery that is used as the "root" object in a query's declaration.

Example:

 SELECT e.firstName
 FROM Employee e, (SELECT count(e2), e2.firstName FROM Employee e2) e3
 WHERE e.firstName = e3.firstName

Version:
2.4
Author:
Pascal Filion
Since:
2.4

Nested Class Summary
protected  class FromSubqueryResolver.VirtualManagedType
          This IManagedType represents a virtual managed type where its content will be derived from the subquery.
protected  class FromSubqueryResolver.VirtualMapping
          This virtual IMapping wraps one of the select items.
protected  class FromSubqueryResolver.VirtualMappingBuilder
          This visitor will traverse the SELECT clause and create virtual mappings for the state field path expressions and any expression aliased with a result variable.
 
Constructor Summary
FromSubqueryResolver(Resolver parent, JPQLQueryContext queryContext, SimpleSelectStatement subquery)
          Creates a new FromSubqueryResolver.
 
Method Summary
 void accept(ResolverVisitor visitor)
          Visits this Resolver by the given visitor.
protected  IType buildType()
          Resolves the IType of the property handled by this Resolver.
protected  ITypeDeclaration buildTypeDeclaration()
          Resolves the ITypeDeclaration of the property handled by this Resolver.
 IManagedType getManagedType()
          Returns the IManagedType associated with the field handled by this Resolver.
 
Methods inherited from class org.eclipse.persistence.jpa.jpql.Resolver
addChild, checkParent, getChild, getMapping, getParent, getParentManagedType, getParentMapping, getParentType, getParentTypeDeclaration, getProvider, getQuery, getType, getType, getType, getTypeDeclaration, getTypeHelper, getTypeRepository, isNullAllowed, setNullAllowed
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FromSubqueryResolver

public FromSubqueryResolver(Resolver parent,
                            JPQLQueryContext queryContext,
                            SimpleSelectStatement subquery)
Creates a new FromSubqueryResolver.

Parameters:
parent - The parent of this resolver, which is never null
queryContext - The context used to query information about the application metadata and cached information
subquery -
Throws:
java.lang.NullPointerException - If the parent is null
Method Detail

accept

public void accept(ResolverVisitor visitor)
Visits this Resolver by the given visitor.

Specified by:
accept in class Resolver
Parameters:
visitor - The visitor to visit this object

buildType

protected IType buildType()
Resolves the IType of the property handled by this Resolver.

Overrides:
buildType in class Resolver
Returns:
Either the IType that was resolved by this Resolver or the IType for IType.UNRESOLVABLE_TYPE if it could not be resolved

buildTypeDeclaration

protected ITypeDeclaration buildTypeDeclaration()
Resolves the ITypeDeclaration of the property handled by this Resolver.

Specified by:
buildTypeDeclaration in class Resolver
Returns:
Either the ITypeDeclaration that was resolved by this Resolver or the ITypeDeclaration for IType.UNRESOLVABLE_TYPE if it could not be resolved

getManagedType

public IManagedType getManagedType()
Returns the IManagedType associated with the field handled by this Resolver. If this Resolver does not handle a field that has a IManagedType, then null should be returned.

For example: "SELECT e FROM Employee e", the Resolver for e would be returning the IManagedType for Employee.

Overrides:
getManagedType in class Resolver
Returns:
Either the IManagedType, if it could be resolved; null otherwise

EclipseLink 2.4.2, build 'v20130514-5956486' API Reference