public class FromSubqueryResolver extends Resolver
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
Modifier and Type | Class and Description |
---|---|
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 and Description |
---|
FromSubqueryResolver(Resolver parent,
JPQLQueryContext queryContext,
SimpleSelectStatement subquery)
Creates a new
FromSubqueryResolver . |
Modifier and Type | Method and Description |
---|---|
protected IType |
buildType()
|
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 . |
addChild, checkParent, getChild, getMapping, getParent, getParentManagedType, getParentMapping, getParentType, getParentTypeDeclaration, getProvider, getQuery, getType, getType, getType, getTypeDeclaration, getTypeHelper, getTypeRepository, isNullAllowed, setNullAllowed
public FromSubqueryResolver(Resolver parent, JPQLQueryContext queryContext, SimpleSelectStatement subquery)
FromSubqueryResolver
.parent
- The parent of this resolver, which is never null
queryContext
- The context used to query information about the application metadata and
cached informationsubquery
- java.lang.NullPointerException
- If the parent is null
protected IType buildType()
protected ITypeDeclaration buildTypeDeclaration()
ITypeDeclaration
of the property handled by this Resolver
.buildTypeDeclaration
in class Resolver
ITypeDeclaration
that was resolved by this Resolver
or the
ITypeDeclaration
for IType.UNRESOLVABLE_TYPE
if it could not be resolvedpublic IManagedType getManagedType()
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.
getManagedType
in class Resolver
IManagedType
, if it could be resolved; null
otherwise