hibernate/hibernate-orm · error · AnnotationException
Generator class '${className}' implements 'IdentifierGenerat
Error message
Generator class '${className}' implements 'IdentifierGenerator' and may not be used with '@ValueGenerationType' What it means
Error "Generator class '${className}' implements 'IdentifierGenerator' and may not be used with '@ValueGenerationType'" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/boot/model/internal/GeneratorBinder.java:362
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,
Value value,
A annotation,
BeanContainer beanContainer) {
@SuppressWarnings("unchecked") // totally fine
final var annotationType = (Class<A>) annotation.annotationType();
final var generatorAnnotation = annotationType.getAnnotation( ValueGenerationType.class );
assert generatorAnnotation != null;
final var generatorClass = generatorAnnotation.generatedBy();View on GitHub (pinned to fad1729dce)
Solutions
- Do not use an IdentifierGenerator implementation with @ValueGenerationType; use a value-generation generator instead.
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/742a45463da90c95.
Report an issue: GitHub.