{"record":{"id":"bce64d13f42e5353","repo":"hibernate/hibernate-orm","slug":"could-not-resolve-discriminator-value-bce64d","errorCode":null,"errorMessage":"Could not resolve discriminator value","messagePattern":"Could not resolve discriminator value","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/metamodel/mapping/EmbeddableDiscriminatorConverter.java","lineNumber":71,"sourceCode":"\t\t\tString discriminatorName,\n\t\t\tJavaType<O> domainJavaType,\n\t\t\tJavaType<R> relationalJavaType,\n\t\t\tList<EmbeddableDiscriminatorValueDetailsImpl> valueMappings) {\n\t\tsuper( discriminatorName, domainJavaType, relationalJavaType );\n\t\tdiscriminatorValueToDetailsMap = new HashMap<>( valueMappings.size() );\n\t\tembeddableClassNameToDetailsMap = new HashMap<>( valueMappings.size() );\n\t\tvalueMappings.forEach( valueDetails -> {\n\t\t\tdiscriminatorValueToDetailsMap.put( valueDetails.getValue(), valueDetails );\n\t\t\tembeddableClassNameToDetailsMap.put( valueDetails.getIndicatedEntityName(), valueDetails );\n\t\t} );\n\t}\n\n\t@Override\n\tpublic O toDomainValue(R relationalForm) {\n\t\tassert relationalForm == null || getRelationalJavaType().isInstance( relationalForm );\n\t\tfinal var matchingValueDetails = getDetailsForDiscriminatorValue( relationalForm );\n\t\tif ( matchingValueDetails == null ) {\n\t\t\tthrow new IllegalStateException( \"Could not resolve discriminator value\" );\n\t\t}\n\t\t//noinspection unchecked\n\t\treturn (O) matchingValueDetails.getEmbeddableClass();\n\t}\n\n\t@Override\n\tpublic EmbeddableDiscriminatorValueDetailsImpl getDetailsForDiscriminatorValue(Object relationalValue) {\n\t\tfinal var valueMatch = discriminatorValueToDetailsMap.get( relationalValue );\n\t\tif ( valueMatch != null ) {\n\t\t\treturn valueMatch;\n\t\t}\n\t\tthrow new HibernateException( \"Unrecognized discriminator value: \" + relationalValue );\n\t}\n\n\t@Override\n\tpublic DiscriminatorValueDetails getDetailsForEntityName(String embeddableClassName) {\n\t\tfinal var valueDetails = embeddableClassNameToDetailsMap.get( embeddableClassName );\n\t\tif ( valueDetails != null ) {","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/metamodel/mapping/EmbeddableDiscriminatorConverter.java#L53-L89","documentation":"Error \"Could not resolve discriminator value\" thrown in hibernate/hibernate-orm.","triggerScenarios":"Thrown when an embeddable discriminator value from the result set cannot be resolved to a mapped embeddable subtype.","commonSituations":"See trigger scenarios.","solutions":["Declare discriminator mappings for every embeddable subtype so the stored value can be resolved.","Verify the embeddable discriminator column contains only declared values."],"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"}