Package org.hibernate.generator
Interface BeforeExecutionGenerator
- All Superinterfaces:
Generator
,Serializable
- All Known Subinterfaces:
IdentifierGenerator
,OptimizableGenerator
,PersistentIdentifierGenerator
- All Known Implementing Classes:
AbstractUUIDGenerator
,CompositeNestedGeneratedValueGenerator
,CurrentTimestampGeneration
,ForeignGenerator
,GUIDGenerator
,IncrementGenerator
,NativeGenerator
,OrderedSequenceGenerator
,SequenceStyleGenerator
,SourceGeneration
,TableGenerator
,TenantIdGeneration
,UuidGenerator
,UUIDGenerator
,UUIDHexGenerator
,VersionGeneration
A generator that is called to produce a value just before a row is written to the database.
The
generate(org.hibernate.engine.spi.SharedSessionContractImplementor, java.lang.Object, java.lang.Object, org.hibernate.generator.EventType)
method may execute arbitrary Java code. It may even, in principle,
access the database via JDBC. But however it's produced, the generated value is sent to the
database via a parameter of a JDBC prepared statement, just like any other field or property
value.
Any BeforeExecutionGenerator
with generation event types
EventTypeSets.INSERT_ONLY
may be used to produce identifiers. The built-in identifier generators all implement the older extension point
IdentifierGenerator
, which is a subtype of this interface, but that
is no longer a requirement for custom id generators.
A custom id generator may be integrated with the program using either:
- the meta-annotation
IdGeneratorType
or - the annotation
GenericGenerator
.
On the other hand, generators for regular fields and properties may be integrated using
ValueGenerationType
, as for any Generator
.
- Since:
- 6.2
-
Method Summary
Modifier and TypeMethodDescriptiongenerate
(SharedSessionContractImplementor session, Object owner, Object currentValue, EventType eventType) Generate a value.default boolean
Determines if the property value is generated when a row is written to the database, or in Java code that executes before the row is written.Methods inherited from interface org.hibernate.generator.Generator
allowAssignedIdentifiers, allowMutation, generatedBeforeExecution, generatedOnExecution, generatesOnInsert, generatesOnUpdate, generatesSometimes, getEventTypes
-
Method Details
-
generatedOnExecution
default boolean generatedOnExecution()Description copied from interface:Generator
Determines if the property value is generated when a row is written to the database, or in Java code that executes before the row is written.- Generators which only implement
BeforeExecutionGenerator
must resultfalse
. - Generators which only implement
OnExecutionGenerator
must resulttrue
. - Generators which implement both subinterfaces may decide at runtime what value to return.
- Specified by:
generatedOnExecution
in interfaceGenerator
- Returns:
true
if the value is generated by the database as a side effect of the execution of aninsert
orupdate
statement, or false if it is generated in Java code before the statement is executed via JDBC.
- Generators which only implement