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
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 org.hibernate.generator.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