Purpose: Query used to delete a collection of objects. This is used by mappings to delete all of their target objects in a single database call. The SQL/SQLStatements must be provided.
DeleteAll can also be used with an Expression (or JPQL) to dynamically delete a set of objects from the database, and invalidate them in the cache.
Responsibilities:
| Modifier and Type | Field and Description |
|---|---|
| protected boolean | isInMemoryOnly
Defines if objects should be remove from the persistence context only (no database). |
| protected List | objects
List containing objects to be deleted, these should be removed from the identity map after deletion. |
| Access | Constructor and Description |
|---|---|
| public | |
| public | DeleteAllQuery(Class<?> referenceClass)
PUBLIC: Create a new delete all query for the class specified. |
| public | DeleteAllQuery(Class<?> referenceClass, Expression selectionCriteria)
PUBLIC: Create a new delete all query for the class and the selection criteria specified. |
| Modifier and Type | Method and Description |
|---|---|
| public Object | Returns: Integer the number of objects (rows) deleted.Implements abstract org. |
| public void | executeDeleteAll(AbstractSession session, AbstractRecord translationRow, Vector<E> objects)
INTERNAL: Delete all queries are executed specially to avoid cloning and ensure preparing. |
| public Object | executeInUnitOfWork(UnitOfWorkImpl
- the session in which the receiver will be executed. unitOfWork, AbstractRecord - the arguments translationRow)Overrides org. |
| protected QueryRedirector | getDefaultRedirector()
Overrides org. |
| public List | |
| public boolean | isDeleteAllQuery()
Overrides org. |
| public boolean | isInMemoryOnly()
INTERNAL: Return if objects should be remove from the persistence context only (no database). |
| protected void | prepare()
Overrides org. |
| public void | setIsInMemoryOnly(boolean isInMemoryOnly)
INTERNAL: Set if objects should be remove from the persistence context only (no database). |
| public void |
| isInMemoryOnly | back to summary |
|---|---|
| protected boolean isInMemoryOnly Defines if objects should be remove from the persistence context only (no database). This is used if delete was already cascaded by the database. | |
| objects | back to summary |
|---|---|
| protected List<Object> objects List containing objects to be deleted, these should be removed from the identity map after deletion. | |
| DeleteAllQuery | back to summary |
|---|---|
| public DeleteAllQuery() PUBLIC: | |
| DeleteAllQuery | back to summary |
|---|---|
| public DeleteAllQuery(Class<?> referenceClass) PUBLIC: Create a new delete all query for the class specified. | |
| DeleteAllQuery | back to summary |
|---|---|
| public DeleteAllQuery(Class<?> referenceClass, Expression selectionCriteria) PUBLIC: Create a new delete all query for the class and the selection criteria specified. | |
| executeDatabaseQuery | back to summary |
|---|---|
| public Object executeDatabaseQuery() throws DatabaseException Implements abstract org. INTERNAL: Perform the work to delete a collection of objects. This skips the optimistic lock check and should not called for objects using locking.
| |
| executeDeleteAll | back to summary |
|---|---|
| public void executeDeleteAll(AbstractSession session, AbstractRecord translationRow, Vector<E> objects) throws DatabaseException INTERNAL: Delete all queries are executed specially to avoid cloning and ensure preparing. | |
| executeInUnitOfWork | back to summary |
|---|---|
| public Object executeInUnitOfWork(UnitOfWorkImpl unitOfWork, AbstractRecord translationRow) throws DatabaseException Overrides org. INTERNAL: This method has to be broken. If commit manager is not active either an exception should be thrown (ObjectLevelModify case), or a transaction should be started early and execute on parent if remote (dataModify case). A modify query is NEVER executed on the parent, unless remote session.
| |
| getDefaultRedirector | back to summary |
|---|---|
| protected QueryRedirector getDefaultRedirector() Overrides org. INTERNAL: Returns the specific default redirector for this query type. There are numerous default query redirectors. See ClassDescriptor for their types.
| |
| getObjects | back to summary |
|---|---|
| public List PUBLIC: Return the objects that are to be deleted | |
| isDeleteAllQuery | back to summary |
|---|---|
| public boolean isDeleteAllQuery() Overrides org. PUBLIC: Return if this is a delete all query.
| |
| isInMemoryOnly | back to summary |
|---|---|
| public boolean isInMemoryOnly() INTERNAL: Return if objects should be remove from the persistence context only (no database). This is used if delete was already cascaded by the database. | |
| prepare | back to summary |
|---|---|
| protected void prepare() throws QueryException Overrides org. INTERNAL: Prepare the receiver for execution in a session.
| |
| setIsInMemoryOnly | back to summary |
|---|---|
| public void setIsInMemoryOnly(boolean isInMemoryOnly) INTERNAL: Set if objects should be remove from the persistence context only (no database). This is used if delete was already cascaded by the database. | |
| setObjects | back to summary |
|---|---|
| public void setObjects(List<Object> objectCollection) PUBLIC (REQUIRED): Set the objects to be deleted. Also REQUIRED is a selection criteria or SQL string that performs the deletion of the objects. This does not generate the SQL call from the deleted objects. List objects used as an indicator of one of two possible ways the query may behave: objects != null - the "old" functionality used by OneToMany mapping objects deleted from the cache, either selection expression or custom sql should be provided for deletion from db; objects == null - the "new" functionality (on par with UpdateAllQuery) the cache is either left alone or in-memory query finds the cached objects to be deleted, and these objects are invalidated in cache. Note that empty objects is still objects != case. Signal that no cache altering is required. Used by AggregationCollectionMapping and OneToManyMapping in case they use indirection and the ValueHolder has not been instantiated. | |