Interface PersistenceQuery
- All Known Implementing Classes:
AbstractCallQuery
,MultiRSCallQuery
,PostgreSQLCallQuery
,ReturnedRSCallQuery
,SQLQuery
Persistence.load(java.lang.Object, org.castor.persist.ProposedEntity, org.exolab.castor.persist.spi.Identity, org.exolab.castor.mapping.AccessMode)
for dealing with complex
queries.
The caller takes full responsibility to assure integrity of transactions and object caching and only relies on the engine to assist in assuring that through the mechanisms available to it.
A query may be created once and used multiple times by calling the
execute(Object, AccessMode, boolean)
method. Query parameters are set each time prior
to executing the query.
See Persistence
for information about locks, loading
objects, identities and stamps.
- Version:
- $Revision: 8104 $ $Date: 2006-04-11 15:26:07 -0600 (Tue, 11 Apr 2006) $
- Author:
- Assaf Arkin
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionboolean
absolute
(int row) Moves the result of the query to the absolute position in the resultset.void
close()
Close the query and release all resources held by the query.void
execute
(Object conn, AccessMode accessMode, boolean scrollable) Execute the query with the give connection and lock type.void
fetch
(ProposedEntity proposedObject) Loades the object.Class<?>
Returns the type of object returned by this query.nextIdentity
(Identity identity) Returns the identity of the next object to be returned.void
setParameter
(int index, Object value) Sets the value of a paramter.int
size()
Finds the size of the resulting resultset from the query.
-
Method Details
-
setParameter
Sets the value of a paramter. Will complain if the parameter is not of the specified type.- Parameters:
index
- The parameter indexvalue
- The parameter value
-
getResultType
Class<?> getResultType()Returns the type of object returned by this query.- Returns:
- The type of object returned by this query
-
execute
Execute the query with the give connection and lock type. After a successful return the query results will be returned by callingnextIdentity(org.exolab.castor.persist.spi.Identity)
andfetch(org.castor.persist.ProposedEntity)
. The query parameters will be reset. A new query may be issued by providing new query parameters and callingexecute(Object, AccessMode, boolean)
.- Parameters:
conn
- An open connectionaccessMode
- The access mode (null equals shared)scrollable
- The db cursor mode.- Throws:
PersistenceException
- An invalid query or an error reported by the persistence engine.
-
nextIdentity
Returns the identity of the next object to be returned. Calling this method multiple time will skip objects. When the result set has been exhuasted, this method will return null.- Parameters:
identity
- The identity of the previous object, null if this method is called for the first time- Returns:
- The identity of the next object, null if the result set has been exhausted
- Throws:
PersistenceException
- An error reported by the persistence engine
-
fetch
Loades the object. This method must be called immediately afternextIdentity(org.exolab.castor.persist.spi.Identity)
with the same identity.If the object is locked by another transaction this method will block until the lock is released, or a timeout occured. If a timeout occurs or the object has been deleted by the other transaction, this method will report an
ObjectNotFoundException
. The query may proceed to the next identity.This method is equivalent to
Persistence.load(java.lang.Object, org.castor.persist.ProposedEntity, org.exolab.castor.persist.spi.Identity, org.exolab.castor.mapping.AccessMode)
with a known cache engine and access mode and acts on the query results rather than issuing a new query to load the object.- Parameters:
proposedObject
- The fields to load into- Throws:
PersistenceException
- The object was not found in persistent storage or any other persistence error occured.- See Also:
-
close
void close()Close the query and release all resources held by the query. -
absolute
Moves the result of the query to the absolute position in the resultset.- Parameters:
row
- The row to move to- Throws:
PersistenceException
- A persistence error occured
-
size
Finds the size of the resulting resultset from the query.- Throws:
PersistenceException
-