hibernate/hibernate-orm · error · IllegalArgumentException

Not an embeddable: ${clsName}

Error message

Not an embeddable: ${clsName}

What it means

Error "Not an embeddable: ${clsName}" thrown in hibernate/hibernate-orm.

Source

Thrown at hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/JpaMetamodelImpl.java:300

			throw new IllegalArgumentException( "Not an entity: " + cls.getName() );
		}
		return entityType;
	}

	@Override
	public @Nullable <X> EmbeddableDomainType<X> findEmbeddableType(Class<X> cls) {
		return checkDomainType( cls, managedTypeByClass.get( cls ) )
					instanceof EmbeddableDomainType<X> embeddableDomainType
				? embeddableDomainType
				: null;
	}

	@Override
	@Nonnull
	public <X> EmbeddableDomainType<X> embeddable(@Nonnull Class<X> cls) {
		final var embeddableType = findEmbeddableType( cls );
		if ( embeddableType == null ) {
			throw new IllegalArgumentException( "Not an embeddable: " + cls.getName() );
		}
		return embeddableType;
	}

	private Collection<ManagedDomainType<?>> getAllManagedTypes() {
		// should never happen
		return switch ( jpaMetaModelPopulationSetting ) {
			case IGNORE_UNSUPPORTED -> managedTypeByClass.values();
			case ENABLED -> managedTypeByName.values();
			case DISABLED -> emptySet();
		};
	}

	@Override
	@Nonnull
	public Set<ManagedType<?>> getManagedTypes() {
		return new HashSet<>( getAllManagedTypes() );
	}

View on GitHub (pinned to fad1729dce)

Solutions

  1. Pass an @Embeddable class that is part of the persistence unit.

When it happens

Trigger: Thrown when embeddable() is called with a Class that is not a mapped embeddable class.

Common situations: See trigger scenarios.


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