hibernate/hibernate-orm · error · AnnotationException
No id generator was declared with the name '${generatorName}
Error message
No id generator was declared with the name '${generatorName}' specified by '@GeneratedValue' (define a named generator using '@SequenceGenerator' or '@TableGenerator') What it means
Error "No id generator was declared with the name '${generatorName}' specified by '@GeneratedValue' (define a named generator using '@SequenceGenerator' or '@TableGenerator')" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/boot/model/internal/GeneratorBinder.java:248
// case UUID -> org.hibernate.id.uuid.UuidGenerator.class.getName();
case UUID -> UuidValueGenerator.class.getName();
case TABLE -> org.hibernate.id.enhanced.TableGenerator.class.getName();
case IDENTITY -> null;
default -> SequenceStyleGenerator.class.getName();
};
}
private static String determineStrategy(
MemberDetails idAttributeMember,
String generatorType,
String generatorName,
MetadataBuildingContext context,
Map<String, ? extends IdentifierGeneratorDefinition> localGenerators,
Map<String, Object> configuration) {
final var definition =
makeIdentifierGeneratorDefinition( generatorName, idAttributeMember, localGenerators, context );
if ( definition == null ) {
throw new AnnotationException( "No id generator was declared with the name '" + generatorName
+ "' specified by '@GeneratedValue'"
+ " (define a named generator using '@SequenceGenerator' or '@TableGenerator')" );
}
configuration.putAll( definition.getParameters() );
// This is quite vague in the spec,
// but a generator could override the generator choice
return generatorStrategy( generatorType, definition );
}
private static String generatorStrategy(String generatorType, IdentifierGeneratorDefinition definition) {
return generatorType != null
// Yuck! this is a hack to not override 'AUTO',
// even if GeneratedValue.generator is specified
&& definition.getStrategy().equals( "identity" )
? generatorType
: definition.getStrategy();
}
View on GitHub (pinned to fad1729dce)
Solutions
- Define a named generator with @SequenceGenerator or @TableGenerator matching the name in @GeneratedValue.
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/5e8b98cb933f585a.
Report an issue: GitHub.