Package org.apache.cayenne.query
Class IndirectQuery
- java.lang.Object
-
- org.apache.cayenne.query.IndirectQuery
-
- All Implemented Interfaces:
Serializable,Query
- Direct Known Subclasses:
AbstractMappedQuery,FluentSelect,ObjectIdQuery,ProcedureCall,RelationshipQuery,SelectById,SQLExec,SQLSelect
public abstract class IndirectQuery extends Object implements Query
A base superclass for queries that resolve into some other queries during the routing phase. Provides caching of a replacement query.- Since:
- 1.2
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected DataMapdataMapprotected EntityResolverlastResolverprotected Stringnameprotected QueryreplacementQuery
-
Constructor Summary
Constructors Constructor Description IndirectQuery()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract QuerycreateReplacementQuery(EntityResolver resolver)Creates a substitute query.SQLActioncreateSQLAction(SQLActionVisitor visitor)Throws an exception as indirect query should not be executed directly.QueryMetadatagetMetaData(EntityResolver resolver)Returns the metadata obtained from the replacement query.protected QuerygetReplacementQuery(EntityResolver resolver)Returns a replacement query, creating it on demand and caching it for reuse.voidroute(QueryRouter router, EntityResolver resolver, Query substitutedQuery)Delegates routing to a replacement query.
-
-
-
Field Detail
-
name
protected String name
-
dataMap
protected DataMap dataMap
- Since:
- 3.1
-
replacementQuery
protected transient Query replacementQuery
-
lastResolver
protected transient EntityResolver lastResolver
-
-
Method Detail
-
getMetaData
public QueryMetadata getMetaData(EntityResolver resolver)
Returns the metadata obtained from the replacement query.- Specified by:
getMetaDatain interfaceQuery
-
route
public void route(QueryRouter router, EntityResolver resolver, Query substitutedQuery)
Delegates routing to a replacement query.
-
createReplacementQuery
protected abstract Query createReplacementQuery(EntityResolver resolver)
Creates a substitute query. An implementor is free to provide an arbitrary replacement query.
-
getReplacementQuery
protected Query getReplacementQuery(EntityResolver resolver)
Returns a replacement query, creating it on demand and caching it for reuse.
-
createSQLAction
public SQLAction createSQLAction(SQLActionVisitor visitor)
Throws an exception as indirect query should not be executed directly.- Specified by:
createSQLActionin interfaceQuery
-
-