org.hibernate.engine
Class CascadingAction

java.lang.Object
  extended by org.hibernate.engine.CascadingAction

public abstract class CascadingAction
extends Object

A session action that may be cascaded from parent entity to its children

Author:
Gavin King

Field Summary
static CascadingAction DELETE
           
static CascadingAction EVICT
           
static CascadingAction LOCK
           
static CascadingAction MERGE
           
static CascadingAction PERSIST
           
static CascadingAction PERSIST_ON_FLUSH
          Execute persist during flush time
static CascadingAction REFRESH
           
static CascadingAction REPLICATE
           
static CascadingAction SAVE_UPDATE
           
static CascadingAction SAVE_UPDATE_COPY
           
 
Method Summary
abstract  void cascade(EventSource session, Object child, String entityName, Object anything, boolean isCascadeDeleteEnabled)
          Cascade the action to the child object.
abstract  boolean deleteOrphans()
          Does this action potentially extrapolate to orphan deletes?
abstract  Iterator getCascadableChildrenIterator(EventSource session, CollectionType collectionType, Object collection)
          Given a collection, get an iterator of the children upon which the current cascading action should be visited.
static Iterator getLoadedElementsIterator(SessionImplementor session, CollectionType collectionType, Object collection)
          Iterate just the elements of the collection that are already there.
 void noCascade(EventSource session, Object child, Object parent, EntityPersister persister, int propertyIndex)
          Called (in the case of requiresNoCascadeChecking() returning true) to validate that no cascade on the given property is considered a valid semantic.
 boolean performOnLazyProperty()
          Should this action be performed (or noCascade consulted) in the case of lazy properties.
 boolean requiresNoCascadeChecking()
          Does the specified cascading action require verification of no cascade validity?
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DELETE

public static final CascadingAction DELETE
See Also:
Session.delete(Object)

LOCK

public static final CascadingAction LOCK
See Also:
Session.lock(Object, LockMode)

REFRESH

public static final CascadingAction REFRESH
See Also:
Session.refresh(Object)

EVICT

public static final CascadingAction EVICT
See Also:
Session.evict(Object)

SAVE_UPDATE

public static final CascadingAction SAVE_UPDATE
See Also:
Session.saveOrUpdate(Object)

MERGE

public static final CascadingAction MERGE
See Also:
Session.merge(Object)

SAVE_UPDATE_COPY

public static final CascadingAction SAVE_UPDATE_COPY
See Also:
Session.saveOrUpdateCopy(Object)

PERSIST

public static final CascadingAction PERSIST
See Also:
Session.persist(Object)

PERSIST_ON_FLUSH

public static final CascadingAction PERSIST_ON_FLUSH
Execute persist during flush time

See Also:
Session.persist(Object)

REPLICATE

public static final CascadingAction REPLICATE
See Also:
Session.replicate(Object, org.hibernate.ReplicationMode)
Method Detail

cascade

public abstract void cascade(EventSource session,
                             Object child,
                             String entityName,
                             Object anything,
                             boolean isCascadeDeleteEnabled)
                      throws HibernateException
Cascade the action to the child object.

Parameters:
session - The session within which the cascade is occuring.
child - The child to which cascading should be performed.
entityName - The child's entity name
anything - Anything ;) Typically some form of cascade-local cache which is specific to each CascadingAction type
isCascadeDeleteEnabled - Are cascading deletes enabled.
Throws:
HibernateException

getCascadableChildrenIterator

public abstract Iterator getCascadableChildrenIterator(EventSource session,
                                                       CollectionType collectionType,
                                                       Object collection)
Given a collection, get an iterator of the children upon which the current cascading action should be visited.

Parameters:
session - The session within which the cascade is occuring.
collectionType - The mapping type of the collection.
collection - The collection instance.
Returns:
The children iterator.

deleteOrphans

public abstract boolean deleteOrphans()
Does this action potentially extrapolate to orphan deletes?

Returns:
True if this action can lead to deletions of orphans.

requiresNoCascadeChecking

public boolean requiresNoCascadeChecking()
Does the specified cascading action require verification of no cascade validity?

Returns:
True if this action requires no-cascade verification; false otherwise.

noCascade

public void noCascade(EventSource session,
                      Object child,
                      Object parent,
                      EntityPersister persister,
                      int propertyIndex)
Called (in the case of requiresNoCascadeChecking() returning true) to validate that no cascade on the given property is considered a valid semantic.

Parameters:
session - The session witin which the cascade is occurring.
child - The property value
parent - The property value owner
persister - The entity persister for the owner
propertyIndex - The index of the property within the owner.

performOnLazyProperty

public boolean performOnLazyProperty()
Should this action be performed (or noCascade consulted) in the case of lazy properties.


getLoadedElementsIterator

public static Iterator getLoadedElementsIterator(SessionImplementor session,
                                                 CollectionType collectionType,
                                                 Object collection)
Iterate just the elements of the collection that are already there. Don't load any new elements from the database.