hibernate/hibernate-orm · error · MappingException
Generator class '${className}' must implement either 'Before
Error message
Generator class '${className}' must implement either 'BeforeExecutionGenerator' or 'OnExecutionGenerator' What it means
Error "Generator class '${className}' must implement either 'BeforeExecutionGenerator' or 'OnExecutionGenerator'" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/boot/model/internal/GeneratorBinder.java:354
if ( BOOT_LOGGER.isTraceEnabled() ) {
BOOT_LOGGER.addedSequenceGenerator( definitionBuilder.getName() );
}
return definitionBuilder.build();
}
private static IdentifierGeneratorDefinition buildTableIdGenerator(TableGenerator generatorAnnotation) {
final var definitionBuilder = new IdentifierGeneratorDefinition.Builder();
interpretTableGenerator( generatorAnnotation, definitionBuilder );
if ( BOOT_LOGGER.isTraceEnabled() ) {
BOOT_LOGGER.addedTableGenerator( definitionBuilder.getName() );
}
return definitionBuilder.build();
}
private static void checkGeneratorClass(Class<? extends Generator> generatorClass) {
if ( !BeforeExecutionGenerator.class.isAssignableFrom( generatorClass )
&& !OnExecutionGenerator.class.isAssignableFrom( generatorClass ) ) {
throw new MappingException( "Generator class '" + generatorClass.getName()
+ "' must implement either 'BeforeExecutionGenerator' or 'OnExecutionGenerator'" );
}
}
private static void checkGeneratorInterfaces(Class<? extends Generator> generatorClass) {
// A regular value generator should not implement legacy IdentifierGenerator
if ( IdentifierGenerator.class.isAssignableFrom( generatorClass ) ) {
throw new AnnotationException( "Generator class '" + generatorClass.getName()
+ "' implements 'IdentifierGenerator' and may not be used with '@ValueGenerationType'" );
}
}
/**
* Return a {@link GeneratorCreator} for an attribute annotated
* with a {@linkplain ValueGenerationType generator annotation}.
*/
private static <A extends Annotation> GeneratorCreator generatorCreator(
MemberDetails memberDetails,View on GitHub (pinned to fad1729dce)
Solutions
- Make the generator class implement BeforeExecutionGenerator or OnExecutionGenerator.
When it happens
Trigger: An identifier/value generator declaration is inconsistent with the referenced generator or the annotated element.
Common situations: @GeneratedValue pointing at a generator of the wrong kind (SEQUENCE vs TABLE), a missing named generator, too many generator annotations, or an unsupported generation strategy for @CollectionId.
AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22).
Data as JSON: /api/errors/c6120ce22d2bc146.
Report an issue: GitHub.