Class ProcedureQuery<T>
- Type Parameters:
T- the type of the result elements: aDataRowby default, or a persistent object when a result type is specified.
Execution with DataContext
Reading OUT parameters
If a ProcedureQuery has OUT parameters, their values are reported as a separate item of the query response, a Map
keyed by parameter name (see OutParametersResult).
Using ProcedureQuery as a Select
Executing ProcedureQuery via ObjectContext.select(Select) makes sense only if
the stored procedure returns a single result set (or alternatively returns a result via
OUT parameters and no other result sets). It is still OK if data modification occurs as
a side effect. However, if the query returns more then one result set, a more generic
form should be used: ObjectContext.execute(Query).
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected CapsStrategyprotected Class<?> protected List<ProcedureColumn[]> protected Stringprotected ObjectThe root object of this query. -
Constructor Summary
ConstructorsConstructorDescriptionCreates an empty procedure query.ProcedureQuery(String procedureName) Creates a ProcedureQuery based on a stored procedure.ProcedureQuery(String procedureName, Class<T> resultType) ProcedureQuery(Procedure procedure) Creates a ProcedureQuery based on a Procedure object.ProcedureQuery(Procedure procedure, Class<T> resultType) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddParameter(String name, Object value) Adds a named parameter to the internal map of parameters.addPrefetch(String prefetchPath) Adds a prefetch.voidaddPrefetches(Collection<String> prefetches) Adds all prefetches from a provided collection.voidaddResultDescriptor(ProcedureColumn[] descriptor) Adds a descriptor for a single ResultSet.voidCleans up all configured parameters.voidClears all prefetches.createSQLAction(SQLActionVisitor visitor) Calls "makeProcedure" on the visitor.intintgetMetaData(EntityResolver resolver) Returns query runtime parameters.intReturns a map of procedure parameters.intReturns a List of descriptors for query ResultSets in the order they are returned by the stored procedure.getRoot()Returns the root of this query.intbooleanvoidremoveParameter(String name) voidremovePrefetch(String prefetch) voidremoveResultDescriptor(ProcedureColumn[] descriptor) Removes result descriptor from the list of descriptors.selectFirst(ObjectContext context) Selects a single object using provided context.voidsetCacheGroup(String cacheGroup) voidsetCacheStrategy(QueryCacheStrategy strategy) voidsetColumnNamesCapitalization(CapsStrategy columnNameCapitalization) voidsetFetchingDataRows(boolean flag) voidsetFetchLimit(int fetchLimit) voidsetFetchOffset(int fetchOffset) voidsetPageSize(int pageSize) voidsetParameters(Map<String, ?> parameters) Sets a map of parameters.voidsetQueryTimeout(int timeout) Set's query timeoutvoidsetResultEntityName(String resultEntityName) voidSets the root of the query.voidsetStatementFetchSize(int size) Sets statement's fetch size (0 for no default size)toString()voidDeprecated, for removal: This API element is subject to removal in a future version.voiduseLocalCache(String cacheGroup) Deprecated, for removal: This API element is subject to removal in a future version.voidDeprecated, for removal: This API element is subject to removal in a future version.voiduseSharedCache(String cacheGroup) Deprecated, for removal: This API element is subject to removal in a future version.
-
Field Details
-
resultEntityName
-
resultClass
-
columnNamesCapitalization
-
parameters
-
resultDescriptors
-
root
The root object of this query. May be an entity name, Java class, ObjEntity or DbEntity, depending on the specific query and how it was constructed.
-
-
Constructor Details
-
ProcedureQuery
public ProcedureQuery()Creates an empty procedure query. The query would fetch DataRows. Fetching Persistent objects can be achieved either by usingProcedureQuery(String, Class)constructor or by callingsetFetchingDataRows(boolean)andsetResultEntityName(String)methods. -
ProcedureQuery
Creates a ProcedureQuery based on a Procedure object. The query would fetch DataRows. Fetching Persistent objects can be achieved either by usingProcedureQuery(String, Class)constructor or by callingsetFetchingDataRows(boolean)andsetResultEntityName(String)methods. -
ProcedureQuery
Creates a ProcedureQuery based on a stored procedure. The query would fetch DataRows. Fetching Persistent objects can be achieved either by usingProcedureQuery(String, Class)constructor or by callingsetFetchingDataRows(boolean)andsetResultEntityName(String)methods.- Parameters:
procedureName- A name of the stored procedure. For this query to work, a procedure with this name must be mapped in Cayenne.
-
ProcedureQuery
-
ProcedureQuery
-
-
Method Details
-
getRoot
Returns the root of this query. -
setRoot
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
-
getMetaData
Description copied from interface:QueryReturns query runtime parameters. The method is called at various stages of the execution by Cayenne access stack to retrieve query parameters. EntityResolver instance is passed to this method, meaning that the query doesn't need to store direct references to Cayenne mapping objects and can resolve them at runtime.- Specified by:
getMetaDatain interfaceQuery- Since:
- 1.2
-
getResultDescriptors
Returns a List of descriptors for query ResultSets in the order they are returned by the stored procedure.Note that if a procedure returns ResultSet in an OUT parameter, it is returned prior to any other result sets (though in practice database engines usually support only one mechanism for returning result sets).
- Since:
- 5.0
-
addResultDescriptor
Adds a descriptor for a single ResultSet. More than one descriptor can be added by calling this method multiple times in the order of described ResultSet appearance in the procedure results.- Since:
- 5.0
-
removeResultDescriptor
Removes result descriptor from the list of descriptors.- Since:
- 5.0
-
createSQLAction
Calls "makeProcedure" on the visitor.- Specified by:
createSQLActionin interfaceQuery- Since:
- 1.2
-
selectFirst
Description copied from interface:SelectSelects a single object using provided context. The query itself can match any number of objects, but will return only the first one. It returns null if no objects were matched.If it matched more than one object, the first object from the list is returned. This makes 'selectFirst' different from
Select.selectOne(ObjectContext), which would throw in this situation. 'selectFirst' is useful e.g. when the query is ordered and we only want to see the first object (e.g. "most recent news article"), etc.Selecting the first object via "Select.selectFirst(ObjectContext)" is more comprehensible than selecting via "ObjectContext.selectFirst(Select)", because implementations of "Select" set fetch size limit to one.
- Specified by:
selectFirstin interfaceSelect<T>- Since:
- 5.0
-
getCacheStrategy
- Since:
- 3.0
-
setCacheStrategy
- Since:
- 3.0
-
getCacheGroup
- Since:
- 4.0
-
setCacheGroup
- Since:
- 4.0
-
useLocalCache
Deprecated, for removal: This API element is subject to removal in a future version.- Since:
- 4.0
-
useLocalCache
Deprecated, for removal: This API element is subject to removal in a future version.- Since:
- 4.0
-
getFetchLimit
public int getFetchLimit() -
setFetchLimit
public void setFetchLimit(int fetchLimit) -
getFetchOffset
public int getFetchOffset()- Since:
- 3.0
-
setFetchOffset
public void setFetchOffset(int fetchOffset) - Since:
- 3.0
-
getPageSize
public int getPageSize() -
setPageSize
public void setPageSize(int pageSize) -
setFetchingDataRows
public void setFetchingDataRows(boolean flag) -
isFetchingDataRows
public boolean isFetchingDataRows() -
addParameter
-
removeParameter
- Since:
- 1.1
-
getParameters
-
setParameters
-
clearParameters
public void clearParameters()Cleans up all configured parameters.- Since:
- 1.1
-
getPrefetchTree
- Since:
- 1.2
-
addPrefetch
-
removePrefetch
- Since:
- 1.2
-
addPrefetches
Adds all prefetches from a provided collection.- Since:
- 1.2
-
clearPrefetches
public void clearPrefetches()Clears all prefetches.- Since:
- 1.2
-
getResultEntityName
- Since:
- 1.2
-
setResultEntityName
- Since:
- 1.2
-
getColumnNamesCapitalization
- Since:
- 3.0
-
setColumnNamesCapitalization
- Since:
- 3.0
-
setStatementFetchSize
public void setStatementFetchSize(int size) Sets statement's fetch size (0 for no default size)- Since:
- 3.0
-
getStatementFetchSize
public int getStatementFetchSize()- Returns:
- statement's fetch size
- Since:
- 3.0
-
getQueryTimeout
public int getQueryTimeout()- Returns:
- query timeout
- Since:
- 4.2
-
setQueryTimeout
public void setQueryTimeout(int timeout) Set's query timeout- Since:
- 4.2
-
setCacheStrategy(QueryCacheStrategy)withQueryCacheStrategy.LOCAL_CACHE