org.apache.cayenne.query
Class SelectQuery

java.lang.Object
  extended by org.apache.cayenne.query.AbstractQuery
      extended by org.apache.cayenne.query.QualifiedQuery
          extended by org.apache.cayenne.query.SelectQuery
All Implemented Interfaces:
Serializable, ParameterizedQuery, Query, XMLSerializable
Direct Known Subclasses:
EOQuery, PrefetchSelectQuery

public class SelectQuery
extends QualifiedQuery
implements ParameterizedQuery, XMLSerializable

A query that selects persistent objects of a certain type or "raw data" (aka DataRows). Supports expression qualifier, multiple orderings and a number of other parameters that serve as runtime hints to Cayenne on how to optimize the fetch and result processing.

Author:
Andrus Adamchik
See Also:
Serialized Form

Field Summary
protected  List<String> customDbAttributes
           
protected  boolean distinct
           
static boolean DISTINCT_DEFAULT
           
static String DISTINCT_PROPERTY
           
protected  List<Ordering> orderings
           
 
Fields inherited from class org.apache.cayenne.query.QualifiedQuery
qualifier
 
Fields inherited from class org.apache.cayenne.query.AbstractQuery
name, root
 
Constructor Summary
SelectQuery()
          Creates an empty SelectQuery.
SelectQuery(Class<?> rootClass)
          Creates a SelectQuery that selects all objects of a given persistent class.
SelectQuery(Class<?> rootClass, Expression qualifier)
          Creates a SelectQuery that selects objects of a given persistent class that match supplied qualifier.
SelectQuery(DbEntity root)
          Creates a SelectQuery for the specified DbEntity.
SelectQuery(DbEntity root, Expression qualifier)
          Creates a SelectQuery for the specified DbEntity with the given qualifier.
SelectQuery(ObjEntity root)
          Creates a SelectQuery with null qualifier, for the specifed ObjEntity
SelectQuery(ObjEntity root, Expression qualifier)
          Creates a SelectQuery for the specified ObjEntity with the given qualifier
SelectQuery(String objEntityName)
          Creates SelectQuery with objEntityName parameter.
SelectQuery(String objEntityName, Expression qualifier)
          Creates SelectQuery with objEntityName and qualifier parameters.
 
Method Summary
 void addCustomDbAttribute(String attributePath)
          Adds a path to the DbAttribute that should be included in the results of this query.
 void addCustomDbAttributes(List<String> attrPaths)
           
 void addOrdering(Ordering ordering)
          Adds ordering specification to this query orderings.
 void addOrdering(String sortPathSpec, boolean isAscending)
          Adds ordering specification to this query orderings.
 void addOrdering(String sortPathSpec, boolean isAscending, boolean ignoreCase)
          Adds ordering specification to this query orderings.
 void addOrderings(List<Ordering> orderings)
          Adds a list of orderings.
 PrefetchTreeNode addPrefetch(String prefetchPath)
          Adds a prefetch with specified relationship path to the query.
 void clearOrderings()
          Clears all configured orderings.
 void clearPrefetches()
          Clears all stored prefetch paths.
 Query createQuery(Map<String,?> parameters)
          Creates and returns a new SelectQuery built using this query as a prototype and substituting qualifier parameters with the values from the map.
 SQLAction createSQLAction(SQLActionVisitor visitor)
          Calls "makeSelect" on the visitor.
 void encodeAsXML(XMLEncoder encoder)
          Prints itself as XML to the provided PrintWriter.
 String[] getCacheGroups()
           
 String getCachePolicy()
           
 List<String> getCustomDbAttributes()
          Returns a list of attributes that will be included in the results of this query.
 int getFetchLimit()
          Returns the fetchLimit.
 QueryMetadata getMetaData(EntityResolver resolver)
          Returns default select parameters.
 List<Ordering> getOrderings()
          Returns a list of orderings used by this query.
 int getPageSize()
          Returns pageSize property.
 PrefetchTreeNode getPrefetchTree()
           
 void initWithProperties(Map<String,?> properties)
          Initializes query parameters using a set of properties.
 boolean isDistinct()
          Returns true if this query returns distinct rows.
 boolean isFetchingCustomAttributes()
          Returns true if there is at least one custom query attribute specified, otherwise returns false for the case when the query results will contain only the root entity attributes.
 boolean isFetchingDataRows()
          Returns true if this query should produce a list of data rows as opposed to DataObjects, false for DataObjects.
 boolean isRefreshingObjects()
          Returns refresh policy of this query.
 boolean isResolvingInherited()
          Returns true if objects fetched via this query should be fully resolved according to the inheritance hierarchy.
 SelectQuery queryWithParameters(Map<String,?> parameters)
          A shortcut for queryWithParameters(Map, boolean)that prunes parts of qualifier that have no parameter value set.
 SelectQuery queryWithParameters(Map<String,?> parameters, boolean pruneMissing)
          Returns a query built using this query as a prototype, using a set of parameters to build the qualifier.
 void removeOrdering(Ordering ordering)
          Removes ordering.
 void removePrefetch(String prefetchPath)
          Removes prefetch.
 void route(QueryRouter router, EntityResolver resolver, Query substitutedQuery)
          Routes itself and if there are any prefetches configured, creates prefetch queries and routes them as well.
 void setCacheGroups(String... cacheGroups)
           
 void setCachePolicy(String policy)
           
 void setDistinct(boolean distinct)
          Sets distinct property that determines whether this query returns distinct row.
 void setFetchingDataRows(boolean flag)
          Sets query result type.
 void setFetchLimit(int fetchLimit)
          Sets the fetchLimit.
 void setPageSize(int pageSize)
          Sets pageSize property.
 void setPrefetchTree(PrefetchTreeNode prefetchTree)
           
 void setRefreshingObjects(boolean flag)
           
 void setResolvingInherited(boolean b)
          Sets whether the objects fetched via this query should be fully resolved according to the inheritance hierarchy.
 
Methods inherited from class org.apache.cayenne.query.QualifiedQuery
andQualifier, getQualifier, orQualifier, setQualifier
 
Methods inherited from class org.apache.cayenne.query.AbstractQuery
getName, getRoot, setName, setRoot, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.apache.cayenne.query.Query
getName
 

Field Detail

DISTINCT_PROPERTY

public static final String DISTINCT_PROPERTY
See Also:
Constant Field Values

DISTINCT_DEFAULT

public static final boolean DISTINCT_DEFAULT
See Also:
Constant Field Values

customDbAttributes

protected List<String> customDbAttributes

orderings

protected List<Ordering> orderings

distinct

protected boolean distinct
Constructor Detail

SelectQuery

public SelectQuery()
Creates an empty SelectQuery.


SelectQuery

public SelectQuery(ObjEntity root)
Creates a SelectQuery with null qualifier, for the specifed ObjEntity

Parameters:
root - the ObjEntity this SelectQuery is for.

SelectQuery

public SelectQuery(ObjEntity root,
                   Expression qualifier)
Creates a SelectQuery for the specified ObjEntity with the given qualifier

Parameters:
root - the ObjEntity this SelectQuery is for.
qualifier - an Expression indicating which objects should be fetched

SelectQuery

public SelectQuery(Class<?> rootClass)
Creates a SelectQuery that selects all objects of a given persistent class.

Parameters:
rootClass - the Class of objects fetched by this query.

SelectQuery

public SelectQuery(Class<?> rootClass,
                   Expression qualifier)
Creates a SelectQuery that selects objects of a given persistent class that match supplied qualifier.

Parameters:
rootClass - the Class of objects fetched by this query.

SelectQuery

public SelectQuery(DbEntity root)
Creates a SelectQuery for the specified DbEntity.

Parameters:
root - the DbEntity this SelectQuery is for.
Since:
1.1

SelectQuery

public SelectQuery(DbEntity root,
                   Expression qualifier)
Creates a SelectQuery for the specified DbEntity with the given qualifier.

Parameters:
root - the DbEntity this SelectQuery is for.
qualifier - an Expression indicating which objects should be fetched
Since:
1.1

SelectQuery

public SelectQuery(String objEntityName)
Creates SelectQuery with objEntityName parameter.


SelectQuery

public SelectQuery(String objEntityName,
                   Expression qualifier)
Creates SelectQuery with objEntityName and qualifier parameters.

Method Detail

getMetaData

public QueryMetadata getMetaData(EntityResolver resolver)
Description copied from class: AbstractQuery
Returns default select parameters.

Specified by:
getMetaData in interface Query
Overrides:
getMetaData in class AbstractQuery
Since:
1.2

route

public void route(QueryRouter router,
                  EntityResolver resolver,
                  Query substitutedQuery)
Routes itself and if there are any prefetches configured, creates prefetch queries and routes them as well.

Specified by:
route in interface Query
Overrides:
route in class AbstractQuery
Since:
1.2

createSQLAction

public SQLAction createSQLAction(SQLActionVisitor visitor)
Calls "makeSelect" on the visitor.

Specified by:
createSQLAction in interface Query
Specified by:
createSQLAction in class AbstractQuery
Since:
1.2

initWithProperties

public void initWithProperties(Map<String,?> properties)
Initializes query parameters using a set of properties.

Since:
1.1

encodeAsXML

public void encodeAsXML(XMLEncoder encoder)
Prints itself as XML to the provided PrintWriter.

Specified by:
encodeAsXML in interface XMLSerializable
Since:
1.1

queryWithParameters

public SelectQuery queryWithParameters(Map<String,?> parameters)
A shortcut for queryWithParameters(Map, boolean)that prunes parts of qualifier that have no parameter value set.


queryWithParameters

public SelectQuery queryWithParameters(Map<String,?> parameters,
                                       boolean pruneMissing)
Returns a query built using this query as a prototype, using a set of parameters to build the qualifier.

See Also:
parameter substitution.

createQuery

public Query createQuery(Map<String,?> parameters)
Creates and returns a new SelectQuery built using this query as a prototype and substituting qualifier parameters with the values from the map.

Specified by:
createQuery in interface ParameterizedQuery
Since:
1.1

addOrdering

public void addOrdering(Ordering ordering)
Adds ordering specification to this query orderings.


addOrderings

public void addOrderings(List<Ordering> orderings)
Adds a list of orderings.


addOrdering

public void addOrdering(String sortPathSpec,
                        boolean isAscending)
Adds ordering specification to this query orderings.


addOrdering

public void addOrdering(String sortPathSpec,
                        boolean isAscending,
                        boolean ignoreCase)
Adds ordering specification to this query orderings.


removeOrdering

public void removeOrdering(Ordering ordering)
Removes ordering.

Since:
1.1

getOrderings

public List<Ordering> getOrderings()
Returns a list of orderings used by this query.


clearOrderings

public void clearOrderings()
Clears all configured orderings.


isDistinct

public boolean isDistinct()
Returns true if this query returns distinct rows.


setDistinct

public void setDistinct(boolean distinct)
Sets distinct property that determines whether this query returns distinct row.


getCustomDbAttributes

public List<String> getCustomDbAttributes()
Returns a list of attributes that will be included in the results of this query.


addCustomDbAttribute

public void addCustomDbAttribute(String attributePath)
Adds a path to the DbAttribute that should be included in the results of this query. Valid paths would look like ARTIST_NAME, PAINTING_ARRAY.PAINTING_ID, etc.


addCustomDbAttributes

public void addCustomDbAttributes(List<String> attrPaths)

isFetchingCustomAttributes

public boolean isFetchingCustomAttributes()
Returns true if there is at least one custom query attribute specified, otherwise returns false for the case when the query results will contain only the root entity attributes.

Note that queries that are fetching custom attributes always return data rows instead of DataObjects.


getPrefetchTree

public PrefetchTreeNode getPrefetchTree()
Since:
1.2

setPrefetchTree

public void setPrefetchTree(PrefetchTreeNode prefetchTree)
Since:
1.2

addPrefetch

public PrefetchTreeNode addPrefetch(String prefetchPath)
Adds a prefetch with specified relationship path to the query.

Since:
1.2 signature changed to return created PrefetchTreeNode.

clearPrefetches

public void clearPrefetches()
Clears all stored prefetch paths.


removePrefetch

public void removePrefetch(String prefetchPath)
Removes prefetch.

Since:
1.1

isFetchingDataRows

public boolean isFetchingDataRows()
Returns true if this query should produce a list of data rows as opposed to DataObjects, false for DataObjects. This is a hint to QueryEngine executing this query.


setFetchingDataRows

public void setFetchingDataRows(boolean flag)
Sets query result type. If flag parameter is true, then results will be in the form of data rows.

Note that if isFetchingCustAttributes() returns true, this setting has no effect, and data rows are always fetched.


isRefreshingObjects

public boolean isRefreshingObjects()
Returns refresh policy of this query. Default is true.

Since:
1.1

setRefreshingObjects

public void setRefreshingObjects(boolean flag)
Since:
1.1

getCachePolicy

public String getCachePolicy()
Since:
1.1

setCachePolicy

public void setCachePolicy(String policy)
Since:
1.1

getCacheGroups

public String[] getCacheGroups()
Since:
3.0

setCacheGroups

public void setCacheGroups(String... cacheGroups)
Since:
3.0

getFetchLimit

public int getFetchLimit()
Returns the fetchLimit.


setFetchLimit

public void setFetchLimit(int fetchLimit)
Sets the fetchLimit.


getPageSize

public int getPageSize()
Returns pageSize property. Page size is a hint telling Cayenne QueryEngine that query result should use paging instead of reading the whole result in the memory.


setPageSize

public void setPageSize(int pageSize)
Sets pageSize property.

Parameters:
pageSize - The pageSize to set

isResolvingInherited

public boolean isResolvingInherited()
Returns true if objects fetched via this query should be fully resolved according to the inheritance hierarchy.

Since:
1.1

setResolvingInherited

public void setResolvingInherited(boolean b)
Sets whether the objects fetched via this query should be fully resolved according to the inheritance hierarchy.

Since:
1.1


Copyright © 2001-2008 Apache Cayenne. All Rights Reserved.