# Class AbstractQuery

java.lang.Object
org.apache.cayenne.query.CacheableQuery
org.apache.cayenne.query.AbstractQuery

All Implemented Interfaces:
  `Serializable, Query`

Direct Known Subclasses:
  `FluentSelect, ProcedureQuery, SQLTemplate`

public abstract class AbstractQuery extends CacheableQuery
A common superclass of Cayenne queries.

See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected Object`
  `root`
  The root object this query.

  ### Fields inherited from class CacheableQuery

  `LOGGER`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractQuery()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract SQLAction`
  `createSQLAction(SQLActionVisitor visitor)`
  A callback method invoked by Cayenne during the final execution phase of the query run.
  `QueryMetadata`
  `getMetaData(EntityResolver resolver)`
  Returns default select parameters.
  `Object`
  `getRoot()`
  Returns the root of this query.
  `void`
  `route(QueryRouter router, EntityResolver resolver, Query substitutedQuery)`
  Implements default routing mechanism relying on the EntityResolver to find DataMap based on the query root.
  `void`
  `setRoot(Object value)`
  Sets the root of the query
  `String`
  `toString()`

  ### Methods inherited from class CacheableQuery

  `getBaseMetaData, getCacheGroup, getCacheStrategy, setCacheGroup, setCacheStrategy, useLocalCache, useLocalCache, useSharedCache, useSharedCache`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### root

    protected Object root
    The root object this query. May be an entity name, Java class, ObjEntity or DbEntity, depending on the specific query and how it was constructed.

- ## Constructor Details

  - ### AbstractQuery

    public AbstractQuery()

- ## Method Details

  - ### getMetaData

    public QueryMetadata getMetaData(EntityResolver resolver)
    Returns default select parameters.
    Since:
      1.2

  - ### getRoot

    public Object getRoot()
    Returns the root of this query.

  - ### setRoot

    public void setRoot(Object value)
    Sets the root of the query
    Parameters:
      `value` - The new root
    Throws:
      `IllegalArgumentException` - if value is not a String, ObjEntity, DbEntity, Procedure, DataMap, Class or null.

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`

  - ### createSQLAction

    public abstract SQLAction createSQLAction(SQLActionVisitor visitor)
    Description copied from interface: `Query`
    A callback method invoked by Cayenne during the final execution phase of the query run. A concrete query implementation is given a chance to decide how it should be handled. Implementors can pick an appropriate method of the SQLActionVisitor to handle itself, create a custom SQLAction of its own, or substitute itself with another query that should be used for SQLAction construction.
    Since:
      1.2

  - ### route

    public void route(QueryRouter router, EntityResolver resolver, Query substitutedQuery)
    Implements default routing mechanism relying on the EntityResolver to find DataMap based on the query root. This mechanism should be sufficient for most queries that "know" their root.
    Since:
      1.2