hibernate/hibernate-orm · error · AnnotationException

Property '${property}' has too many generator annotations: $

Error message

Property '${property}' has too many generator annotations: ${generatorAnnotations}

What it means

Error "Property '${property}' has too many generator annotations: ${generatorAnnotations}" thrown in hibernate/hibernate-orm.

Source

Thrown at hibernate-core/src/main/java/org/hibernate/boot/model/internal/GeneratorBinder.java:887

		else if ( idMemberDetails.hasDirectAnnotationUsage( GeneratedValue.class ) ) {
			createIdGenerator( idMemberDetails, idValue, propertyHolder.getPersistentClass(), buildingContext );
		}
	}

	/**
	 * Returns the value generation strategy for the given property, if any, by
	 * considering {@linkplain ValueGenerationType generator type annotations}.
	 */
	static GeneratorCreator createValueGeneratorFromAnnotations(
			PropertyHolder holder, String propertyName,
			Value value, MemberDetails property, MetadataBuildingContext buildingContext) {
		final var generatorAnnotations =
				property.getMetaAnnotated( ValueGenerationType.class,
						buildingContext.getBootstrapContext().getModelsContext() );
		return switch ( generatorAnnotations.size() ) {
			case 0 -> null;
			case 1 -> generatorCreator( property, value, generatorAnnotations.get(0), beanContainer( buildingContext ) );
			default -> throw new AnnotationException( "Property '" + qualify( holder.getPath(), propertyName )
					+ "' has too many generator annotations: " + generatorAnnotations );
		};
	}

	public static void applyIfNotEmpty(String name, String value, BiConsumer<String,String> consumer) {
		if ( isNotEmpty( value ) ) {
			consumer.accept( name, value );
		}
	}

	private static Setter injector(Property property, Class<?> attributeDeclarer) {
		return property.getPropertyAccessStrategy( attributeDeclarer )
				.buildPropertyAccess( attributeDeclarer, property.getName(), true )
				.getSetter();
	}

	/**
	 * Return the class that declares the composite pk attributes,

View on GitHub (pinned to fad1729dce)

Solutions

  1. Keep only one generator annotation on the property.

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/adfe6f50ef94a499. Report an issue: GitHub.