hibernate/hibernate-orm · error · AnnotationException
Entity '<className>' is a subclass in a 'SINGLE_TABLE' hiera
Error message
Entity '<className>' is a subclass in a 'SINGLE_TABLE' hierarchy and may not be annotated '@Table' (the root class declares the table mapping for the hierarchy)
What it means
Error "Entity '<className>' is a subclass in a 'SINGLE_TABLE' hierarchy and may not be annotated '@Table' (the root class declares the table mapping for the hierarchy)" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/boot/model/internal/EntityBinder.java:853
schema = tableAnnotation.schema();
catalog = tableAnnotation.catalog();
uniqueConstraints = tableAnnotation.uniqueConstraints();
}
else {
//might be no @Table annotation on the annotated class
schema = "";
table = "";
catalog = "";
uniqueConstraints = new UniqueConstraint[0];
}
if ( inheritanceState.hasTable() ) {
createTable( inheritanceState, superEntity, schema, table, catalog, uniqueConstraints );
}
else {
// if we get here we have SINGLE_TABLE inheritance
if ( tableAnnotation != null ) {
throw new AnnotationException( "Entity '" + annotatedClass.getName()
+ "' is a subclass in a 'SINGLE_TABLE' hierarchy and may not be annotated '@Table'"
+ " (the root class declares the table mapping for the hierarchy)");
}
// we at least need to properly set up the EntityTableXref
bindTableForDiscriminatedSubclass( superEntity.getEntityName() );
}
}
private void createTable(
InheritanceState inheritanceState,
PersistentClass superEntity,
String schema,
String table,
String catalog,
UniqueConstraint[] uniqueConstraints) {
final var models = modelsContext();
final var rowId = annotatedClass.getAnnotationUsage( RowId.class, models );
final var view = annotatedClass.getAnnotationUsage( View.class, models );View on GitHub (pinned to fad1729dce)
Solutions
- Remove @Table from the SINGLE_TABLE subclass; declare the table on the hierarchy root.
When it happens
Trigger: An annotation restricted to the root of an inheritance hierarchy is placed on a subclass (or the hierarchy rules are otherwise violated).
Common situations: SINGLE_TABLE/JOINED hierarchies where @Table, @DiscriminatorColumn, @DiscriminatorFormula, @Cache, @Immutable, @Id or @Version are declared on the wrong class of the hierarchy.
AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22).
Data as JSON: /api/errors/99a84195c3683f2e.
Report an issue: GitHub.