hibernate/hibernate-orm · error · AnnotationPlacementException

@EmbeddedTable only supported for use on entity or mapped-su

Error message

@EmbeddedTable only supported for use on entity or mapped-superclass

What it means

Error "@EmbeddedTable only supported for use on entity or mapped-superclass" thrown in hibernate/hibernate-orm.

Source

Thrown at hibernate-core/src/main/java/org/hibernate/boot/model/internal/ComponentPropertyHolder.java:141

			MetadataBuildingContext buildingContext) {
		Table tableToUse = container.getTable();
		boolean wasExplicit =
				container instanceof ComponentPropertyHolder componentPropertyHolder
						&& componentPropertyHolder.getComponent().wasTableExplicitlyDefined();

		final var attributeMember = propertyData.getAttributeMember();
		if ( attributeMember != null ) {
			final var embeddedTableAnn = attributeMember.getDirectAnnotationUsage( EmbeddedTable.class );
			// we only allow this when done for an embedded on an entity or mapped-superclass
			if ( container instanceof ClassPropertyHolder ) {
				if ( embeddedTableAnn != null ) {
					tableToUse = resolveEmbeddedTable( container, buildingContext, embeddedTableAnn );
					wasExplicit = true;
				}
			}
			else if ( embeddedTableAnn != null ) {
				// not allowed
				throw new AnnotationPlacementException(
						"@EmbeddedTable only supported for use on entity or mapped-superclass" );
			}
		}
		if ( attributeMember != null && container instanceof ClassPropertyHolder ) {
			final var embeddedTableAnn = attributeMember.getDirectAnnotationUsage( EmbeddedTable.class );
			if ( embeddedTableAnn != null ) {
				tableToUse = resolveEmbeddedTable( container, buildingContext, embeddedTableAnn );
				wasExplicit = true;
			}
		}

		component.setTable( tableToUse, wasExplicit );
	}

	private static Table resolveEmbeddedTable(
			PropertyHolder container, MetadataBuildingContext buildingContext, EmbeddedTable embeddedTableAnn) {
		final Identifier tableNameIdentifier =
				buildingContext.getObjectNameNormalizer()

View on GitHub (pinned to fad1729dce)

Solutions

  1. Move @EmbeddedTable onto an entity or mapped-superclass, or remove it from the unsupported target.

When it happens

Trigger: An @Embeddable / @Embedded / @ElementCollection mapping violates an embeddable mapping constraint.

Common situations: Embeddables with @Id members, inheritance, recursive composition, or properties split across multiple tables; or @Convert/@EmbeddedTable placed where unsupported.


AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22). Data as JSON: /api/errors/d6919595bfc7c8f4. Report an issue: GitHub.