Package org.hibernate.action.internal
Class UnresolvedEntityInsertActions
java.lang.Object
org.hibernate.action.internal.UnresolvedEntityInsertActions
Tracks unresolved entity insert actions.
An entity insert action is unresolved if the entity to be inserted has at least one non-nullable association with an unsaved transient entity, and the foreign key points to that unsaved transient entity.
These references must be resolved before an insert action can be executed.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddUnresolvedEntityInsertAction(AbstractEntityInsertAction insert, NonNullableTransientDependencies dependencies) Add an unresolved insert action.voidThrowsPropertyValueExceptionif there are any unresolved entity insert actions that depend on non-nullable associations with a transient entity.voidclear()Clear thisUnresolvedEntityInsertActions.deserialize(ObjectInputStream ois, EventSource session) Deserialize anUnresolvedEntityInsertActionsobject.Returns the unresolved insert actions.booleanisEmpty()Returns true if there are no unresolved entity insert actions.resolveDependentActions(Object managedEntity, SessionImplementor session) Resolve any dependencies onmanagedEntity.voidSerialize thisUnresolvedEntityInsertActionsobject.toString()
-
Constructor Details
-
UnresolvedEntityInsertActions
public UnresolvedEntityInsertActions()
-
-
Method Details
-
addUnresolvedEntityInsertAction
public void addUnresolvedEntityInsertAction(AbstractEntityInsertAction insert, NonNullableTransientDependencies dependencies) Add an unresolved insert action.- Parameters:
insert- - unresolved insert action.dependencies- - non-nullable transient dependencies (must be non-null and non-empty).- Throws:
IllegalArgumentException- ifdependencies is null or empty.
-
getDependentEntityInsertActions
Returns the unresolved insert actions.- Returns:
- the unresolved insert actions.
-
checkNoUnresolvedActionsAfterOperation
ThrowsPropertyValueExceptionif there are any unresolved entity insert actions that depend on non-nullable associations with a transient entity. This method should be called on completion of an operation (after all cascades are completed) that saves an entity.- Throws:
PropertyValueException- if there are any unresolved entity insert actions;PropertyValueException.getEntityName()andPropertyValueException.getPropertyName()will return the entity name and property value for the first unresolved entity insert action.
-
isEmpty
public boolean isEmpty()Returns true if there are no unresolved entity insert actions.- Returns:
- true, if there are no unresolved entity insert actions; false, otherwise.
-
resolveDependentActions
public Set<AbstractEntityInsertAction> resolveDependentActions(Object managedEntity, SessionImplementor session) Resolve any dependencies onmanagedEntity.- Parameters:
managedEntity- - the managed entity namesession- - the session- Returns:
- the insert actions that depended only on the specified entity.
- Throws:
IllegalArgumentException- ifmanagedEntitydid not have managed or read-only status.
-
clear
public void clear()Clear thisUnresolvedEntityInsertActions. -
toString
-
serialize
Serialize thisUnresolvedEntityInsertActionsobject.- Parameters:
oos- - the output stream- Throws:
IOException- if there is an error writing this object to the output stream.
-
deserialize
public static UnresolvedEntityInsertActions deserialize(ObjectInputStream ois, EventSource session) throws IOException, ClassNotFoundException Deserialize anUnresolvedEntityInsertActionsobject.- Parameters:
ois- - the input stream.session- - the session.- Returns:
- the deserialized
UnresolvedEntityInsertActionsobject - Throws:
IOException- if there is an error writing this object to the output stream.ClassNotFoundException- if there is a class that cannot be loaded.
-