# Class QueryChain

java.lang.Object
org.apache.cayenne.query.QueryChain

All Implemented Interfaces:
  `Serializable, Query`

public class QueryChain extends Object implements Query
A Query decorator for a collection of other queries. Note that QueryChain will always return DataRows (that is if it returns data), as it has no way of knowing how to convert the results to objects.

Since:
  1.2
See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected Collection<Query>`
  `chain`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `QueryChain()`
  Creates an empty QueryChain.
  `QueryChain(Collection<? extends Query> queries)`
  Creates a new QueryChain with a collection of Queries.
  `QueryChain(Query[] queries)`
  Creates a new QueryChain out of an array of queries.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addQuery(Query query)`
  Adds a query to the chain.
  `SQLAction`
  `createSQLAction(SQLActionVisitor visitor)`
  Throws an exception as execution should've been delegated to the queries contained in the chain.
  `QueryMetadata`
  `getMetaData(EntityResolver resolver)`
  Returns default metadata.
  `boolean`
  `isEmpty()`
  `boolean`
  `removeQuery(Query query)`
  Removes a query from the chain, returning true if the query was indeed present in the chain and was removed.
  `void`
  `route(QueryRouter router, EntityResolver resolver, Query substitutedQuery)`
  Delegates routing to each individual query in the chain.

  ### Methods inherited from class Object

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

- ## Field Details

  - ### chain

    protected Collection<Query> chain

- ## Constructor Details

  - ### QueryChain

    public QueryChain()
    Creates an empty QueryChain.

  - ### QueryChain

    public QueryChain(Query[] queries)
    Creates a new QueryChain out of an array of queries.

  - ### QueryChain

    public QueryChain(Collection<? extends Query> queries)
    Creates a new QueryChain with a collection of Queries.

- ## Method Details

  - ### addQuery

    public void addQuery(Query query)
    Adds a query to the chain.

  - ### removeQuery

    public boolean removeQuery(Query query)
    Removes a query from the chain, returning true if the query was indeed present in the chain and was removed.

  - ### isEmpty

    public boolean isEmpty()

  - ### route

    public void route(QueryRouter router, EntityResolver resolver, Query substitutedQuery)
    Delegates routing to each individual query in the chain. If there is no queries, this method does nothing.
    Specified by:
      `route` in interface `Query`

  - ### createSQLAction

    public SQLAction createSQLAction(SQLActionVisitor visitor)
    Throws an exception as execution should've been delegated to the queries contained in the chain.
    Specified by:
      `createSQLAction` in interface `Query`

  - ### getMetaData

    public QueryMetadata getMetaData(EntityResolver resolver)
    Returns default metadata.
    Specified by:
      `getMetaData` in interface `Query`