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

  1. 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.