{"record":{"id":"dbddff838e9d19c5","repo":"hibernate/hibernate-orm","slug":"entity-class-classname-has-joined-inheritanc","errorCode":null,"errorMessage":"Entity class '<className>' has 'JOINED' inheritance and is annotated '@DiscriminatorFormula'","messagePattern":"Entity class '<className>' has 'JOINED' inheritance and is annotated '@DiscriminatorFormula'","errorType":"exception","errorClass":"AnnotationException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/boot/model/internal/EntityBinder.java","lineNumber":1060,"sourceCode":"\t\t\t}\n\t\t\tif ( discriminatorFormula != null ) {\n\t\t\t\tthrow new AnnotationException( \"Entity class '\" + annotatedClass.getName()\n\t\t\t\t\t\t+  \"' is annotated '@DiscriminatorFormula' but it is not the root of the entity inheritance hierarchy\");\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Process all discriminator-related metadata per rules for \"joined\" inheritance, taking\n\t * into account {@value AvailableSettings#IMPLICIT_DISCRIMINATOR_COLUMNS_FOR_JOINED_SUBCLASS}\n\t * and {@value AvailableSettings#IGNORE_EXPLICIT_DISCRIMINATOR_COLUMNS_FOR_JOINED_SUBCLASS}.\n\t */\n\tprivate AnnotatedDiscriminatorColumn processJoinedDiscriminatorProperties(InheritanceState inheritanceState) {\n\t\tfinal var modelContext = modelsContext();\n\n\t\tif ( annotatedClass.hasAnnotationUsage( DiscriminatorFormula.class, modelContext ) ) {\n\t\t\tthrow new AnnotationException( \"Entity class '\" + annotatedClass.getName()\n\t\t\t\t\t+  \"' has 'JOINED' inheritance and is annotated '@DiscriminatorFormula'\" );\n\t\t}\n\n\t\tfinal var discriminatorColumn = annotatedClass.getAnnotationUsage( DiscriminatorColumn.class, modelContext );\n\t\tif ( !inheritanceState.hasParents()\n\t\t\t\t|| annotatedClass.hasAnnotationUsage( Inheritance.class, modelContext ) ) {\n\t\t\treturn useDiscriminatorColumnForJoined( discriminatorColumn )\n\t\t\t\t\t? buildDiscriminatorColumn( discriminatorColumn, null, null, DEFAULT_DISCRIMINATOR_COLUMN_NAME, context )\n\t\t\t\t\t: null;\n\t\t}\n\t\telse {\n\t\t\t// not a root entity\n\t\t\tif ( discriminatorColumn != null ) {\n\t\t\t\tthrow new AnnotationException( \"Entity class '\" + annotatedClass.getName()\n\t\t\t\t\t\t+  \"' is annotated '@DiscriminatorColumn' but it is not the root of the entity inheritance hierarchy\");\n\t\t\t}\n\t\t\treturn null;\n\t\t}","sourceCodeStart":1042,"sourceCodeEnd":1078,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/boot/model/internal/EntityBinder.java#L1042-L1078","documentation":"Error \"Entity class '<className>' has 'JOINED' inheritance and is annotated '@DiscriminatorFormula'\" thrown in hibernate/hibernate-orm.","triggerScenarios":"A discriminator mapping is declared where the inheritance strategy does not allow it or is missing required values.","commonSituations":"@DiscriminatorColumn/@DiscriminatorFormula on non-root classes, JOINED hierarchies with @DiscriminatorFormula, or duplicate/missing @DiscriminatorValue declarations.","solutions":["Remove @DiscriminatorFormula; JOINED inheritance does not use a discriminator formula."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fad1729dce015f908198d57a8d80274a30f905a5","analyzedAt":"2026-08-22T04:13:57.527Z","schemaVersion":2},"datasetVersion":"2026-08-22T09:17:25.309Z"}