public staticCompletionStage<Boolean>isNotTransient(String entityName,
Object entity,
Boolean assumed,
org.hibernate.engine.spi.SharedSessionContractImplementor session)
Is this instance persistent or detached?
If assumed is non-null, don't hit the database to make the determination, instead assume that
value; the client code must be prepared to "recover" in the case that this assumed result is incorrect.
Parameters:
entityName - The name of the entity
entity - The entity instance
assumed - The assumed return value, if avoiding database hit is desired
session - The session
Returns:
true if the given entity is not transient (meaning it is either detached/persistent)
isTransient
public staticCompletionStage<Boolean>isTransient(String entityName,
Object entity,
Boolean assumed,
org.hibernate.engine.spi.SharedSessionContractImplementor session)
Is this instance, which we know is not persistent, actually transient?
If assumed is non-null, don't hit the database to make the determination, instead assume that
value; the client code must be prepared to "recover" in the case that this assumed result is incorrect.
Parameters:
entityName - The name of the entity
entity - The entity instance
assumed - The assumed return value, if avoiding database hit is desired
session - The session
Returns:
true if the given entity is transient (unsaved)
getEntityIdentifierIfNotUnsaved
public staticCompletionStage<Object>getEntityIdentifierIfNotUnsaved(String entityName,
Object object,
org.hibernate.engine.spi.SharedSessionContractImplementor session)
throws org.hibernate.TransientObjectException
Return the identifier of the persistent or transient object, or throw
an exception if the instance is "unsaved"
Used by OneToOneType and ManyToOneType to determine what id value should
be used for an object that may or may not be associated with the session.
This does a "best guess" using any/all info available to use (not just the
EntityEntry).
Parameters:
entityName - The name of the entity
object - The entity instance
session - The session
Returns:
The identifier
Throws:
org.hibernate.TransientObjectException - if the entity is transient (does not yet have an identifier)