Interface BeforeExecutionGenerator
- All Superinterfaces:
Generator, Serializable
- All Known Subinterfaces:
IdentifierGenerator, OptimizableGenerator, PersistentIdentifierGenerator
- All Known Implementing Classes:
AbstractUUIDGenerator, CompositeNestedGeneratedValueGenerator, ForeignGenerator, GUIDGenerator, IncrementGenerator, NativeGenerator, OrderedSequenceGenerator, SequenceStyleGenerator, TableGenerator, UuidGenerator, UUIDGenerator, UUIDHexGenerator
A generator that is called to produce a value just before a row is written to the database.
The
generate(SharedSessionContractImplementor, Object, Object, 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
IdGeneratorTypeor - 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 booleanDetermines 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 Generator
allowAssignedIdentifiers, allowMutation, generatedBeforeExecution, generatedOnExecution, generatesOnForceIncrement, generatesOnInsert, generatesOnUpdate, generatesSometimes, getEventTypes
-
Method Details
-
generatedOnExecution
default boolean generatedOnExecution()Description copied from interface:GeneratorDetermines 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
BeforeExecutionGeneratormust resultfalse. - Generators which only implement
OnExecutionGeneratormust resulttrue. - Generators which implement both subinterfaces may decide at runtime what value to return.
- Specified by:
generatedOnExecutionin interfaceGenerator- Returns:
trueif the value is generated by the database as a side effect of the execution of aninsertorupdatestatement, or false if it is generated in Java code before the statement is executed via JDBC.
- Generators which only implement