Class ProcedureQuery
- All Implemented Interfaces:
Serializable
,ParameterizedQuery
,Query
Execution with DataContext
Reading OUT parameters
If a ProcedureQuery has OUT parameters, they are wrapped in a separate List in the query result. Such list will contain a single Map with OUT parameter values.
Using ProcedureQuery as a GenericSelectQuery
Executing ProcedureQuery via
DataContext.performQuery(Query)
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:
DataContext.performGenericQuery(Query)
.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
protected CapsStrategy
protected Class
<?> protected List
<ColumnDescriptor[]> protected String
Fields inherited from class org.apache.cayenne.query.AbstractQuery
root
Fields inherited from class org.apache.cayenne.query.CacheableQuery
logger
-
Constructor Summary
ConstructorDescriptionCreates an empty procedure query.ProcedureQuery
(String procedureName) Creates a ProcedureQuery based on a stored procedure.ProcedureQuery
(String procedureName, Class<?> resultType) ProcedureQuery
(Procedure procedure) Creates a ProcedureQuery based on a Procedure object.ProcedureQuery
(Procedure procedure, Class<?> resultType) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addParameter
(String name, Object value) Adds a named parameter to the internal map of parameters.addPrefetch
(String prefetchPath) Adds a prefetch.void
addPrefetches
(Collection<String> prefetches) Adds all prefetches from a provided collection.void
addResultDescriptor
(ColumnDescriptor[] descriptor) Adds a descriptor for a single ResultSet.void
Cleans up all configured parameters.void
Clears all prefetches.createQuery
(Map<String, ?> parameters) Creates and returns a new ProcedureQuery built using this query as a prototype and substituting template parameters with the values from the map.createSQLAction
(SQLActionVisitor visitor) Calls "makeProcedure" on the visitor.protected org.apache.cayenne.query.BaseQueryMetadata
int
int
getMetaData
(EntityResolver resolver) Returns default select parameters.int
Returns a map of procedure parameters.int
Returns a List of descriptors for query ResultSets in the order they are returned by the stored procedure.int
void
initWithProperties
(Map<String, ?> properties) Initializes query parameters using a set of properties.boolean
void
removeParameter
(String name) void
removePrefetch
(String prefetch) void
removeResultDescriptor
(ColumnDescriptor[] descriptor) Removes result descriptor from the list of descriptors.void
setColumnNamesCapitalization
(CapsStrategy columnNameCapitalization) void
setFetchingDataRows
(boolean flag) void
setFetchLimit
(int fetchLimit) void
setFetchOffset
(int fetchOffset) void
setPageSize
(int pageSize) void
setParameters
(Map<String, ?> parameters) Sets a map of parameters.void
setQueryTimeout
(int timeout) Set's query timeoutvoid
setResultEntityName
(String resultEntityName) void
setStatementFetchSize
(int size) Sets statement's fetch size (0 for no default size)Methods inherited from class org.apache.cayenne.query.AbstractQuery
getRoot, route, setRoot, toString
Methods inherited from class org.apache.cayenne.query.CacheableQuery
getCacheGroup, getCacheStrategy, setCacheGroup, setCacheStrategy, useLocalCache, useLocalCache, useSharedCache, useSharedCache
-
Field Details
-
COLUMN_NAME_CAPITALIZATION_PROPERTY
- See Also:
-
resultEntityName
- Since:
- 1.2
-
resultClass
- Since:
- 1.2
-
columnNamesCapitalization
-
parameters
-
resultDescriptors
- Since:
- 1.2
-
-
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
- Since:
- 1.1
-
ProcedureQuery
- Since:
- 1.1
-
-
Method Details
-
getMetaData
Description copied from class:AbstractQuery
Returns default select parameters.- Specified by:
getMetaData
in interfaceQuery
- Overrides:
getMetaData
in classAbstractQuery
- 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:
- 1.2
-
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:
- 1.2
-
removeResultDescriptor
Removes result descriptor from the list of descriptors.- Since:
- 1.2
-
createSQLAction
Calls "makeProcedure" on the visitor.- Specified by:
createSQLAction
in interfaceQuery
- Specified by:
createSQLAction
in classAbstractQuery
- Since:
- 1.2
-
initWithProperties
Initializes query parameters using a set of properties.- Since:
- 1.1
-
createQuery
Creates and returns a new ProcedureQuery built using this query as a prototype and substituting template parameters with the values from the map.- Specified by:
createQuery
in interfaceParameterizedQuery
- Since:
- 1.1
-
getBaseMetaData
protected org.apache.cayenne.query.BaseQueryMetadata getBaseMetaData()- Specified by:
getBaseMetaData
in classCacheableQuery
-
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
Adds a named parameter to the internal map of parameters.- Since:
- 1.1
-
removeParameter
- Since:
- 1.1
-
getParameters
Returns a map of procedure parameters.- Since:
- 1.1
-
setParameters
Sets a map of parameters.- Since:
- 1.1
-
clearParameters
public void clearParameters()Cleans up all configured parameters.- Since:
- 1.1
-
getPrefetchTree
- Since:
- 1.2
-
addPrefetch
Adds a prefetch.- Since:
- 1.2
-
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
-