hibernate/hibernate-orm · error · AnnotationException

@SQLDeleteAll does not apply to entities: ${entityName}

Error message

@SQLDeleteAll does not apply to entities: ${entityName}

What it means

Error "@SQLDeleteAll does not apply to entities: ${entityName}" thrown in hibernate/hibernate-orm.

Source

Thrown at hibernate-core/src/main/java/org/hibernate/boot/model/internal/EntityBinder.java:1549

				persistentClass.setUpdateExpectation( getDefaultSupplier( expectationClass ) );
			}
		}

		var sqlDelete = resolveCustomSqlAnnotation( annotatedClass, SQLDelete.class, primaryTableName );
		if ( sqlDelete == null ) {
			sqlDelete = resolveCustomSqlAnnotation( annotatedClass, SQLDelete.class, "" );
		}
		if ( sqlDelete != null ) {
			persistentClass.setCustomSQLDelete( sqlDelete.sql().trim(), sqlDelete.callable() );
			final var expectationClass = sqlDelete.verify();
			if ( expectationClass != Expectation.class ) {
				persistentClass.setDeleteExpectation( getDefaultSupplier( expectationClass ) );
			}
		}

		final var sqlDeleteAll = resolveCustomSqlAnnotation( annotatedClass, SQLDeleteAll.class, "" );
		if ( sqlDeleteAll != null ) {
			throw new AnnotationException("@SQLDeleteAll does not apply to entities: "
					+ persistentClass.getEntityName());
		}

		final var sqlSelect = getOverridableAnnotation( annotatedClass, SQLSelect.class, context );
		if ( sqlSelect != null ) {
			final String loaderName = persistentClass.getEntityName() + "$SQLSelect";
			persistentClass.setLoaderName( loaderName );
			bindNativeQuery( loaderName, sqlSelect, annotatedClass, context );
		}

		final var hqlSelect = annotatedClass.getAnnotationUsage( HQLSelect.class, modelsContext() );
		if ( hqlSelect != null ) {
			final String loaderName = persistentClass.getEntityName() + "$HQLSelect";
			persistentClass.setLoaderName( loaderName );
			bindQuery( loaderName, hqlSelect, context );
		}
	}

View on GitHub (pinned to fad1729dce)

Solutions

  1. Remove @SQLDeleteAll from the entity; it applies only to collections.

When it happens

Trigger: @SQLDeleteAll is placed on an entity, where it does not apply.

Common situations: @SQLDeleteAll used on an @Entity class; it is only valid for collections.


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