hibernate/hibernate-orm · error · IllegalArgumentException

Abstract class cannot be instantiated: " + clazz.getName()

Error message

Abstract class cannot be instantiated: " + clazz.getName()

What it means

Error "Abstract class cannot be instantiated: " + clazz.getName()" thrown in hibernate/hibernate-orm.

Source

Thrown at hibernate-core/src/main/java/org/hibernate/internal/util/ReflectHelper.java:294

		if ( isAbstractClass( clazz ) ) {
			return null;
		}

		try {
			final var constructor = clazz.getDeclaredConstructor( NO_PARAM_SIGNATURE );
			ensureAccessibility( constructor );
			return constructor;
		}
		catch ( NoSuchMethodException nme ) {
			throw new PropertyNotFoundException(
					"Object class [" + clazz.getName() + "] must declare a default (no-argument) constructor"
			);
		}
	}

	public static <T> Supplier<T> getDefaultSupplier(Class<T> clazz) {
		if ( isAbstractClass( clazz ) ) {
			throw new IllegalArgumentException( "Abstract class cannot be instantiated: " + clazz.getName() );
		}

		try {
			final var constructor = clazz.getDeclaredConstructor( NO_PARAM_SIGNATURE );
			ensureAccessibility( constructor );
			return () -> {
				try {
					return constructor.newInstance();
				}
				catch ( InstantiationException|IllegalAccessException|InvocationTargetException e ) {
					throw new org.hibernate.InstantiationException( "Constructor threw exception", clazz, e );
				}
			};
		}
		catch ( NoSuchMethodException nme ) {
			return () -> {
				try {
					return clazz.newInstance();

View on GitHub (pinned to fad1729dce)

Solutions

  1. Instantiate a concrete subclass instead of the abstract class; fix mappings that reference the abstract type directly.

When it happens

Trigger: Thrown at hibernate-core/src/main/java/org/hibernate/internal/util/ReflectHelper.java:294 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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