{"record":{"id":"9f630c2f4d0b9f8e","repo":"hibernate/hibernate-orm","slug":"entity-does-not-define-a-natural-id-entityname","errorCode":null,"errorMessage":"Entity does not define a natural id : ${entityName}","messagePattern":"Entity does not define a natural id : (.+?)","errorType":"exception","errorClass":"HibernateException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java","lineNumber":5176,"sourceCode":"\n\t@Override\n\tpublic boolean hasSubselectLoadableCollections() {\n\t\treturn hasSubselectLoadableCollections;\n\t}\n\n\t@Override\n\tpublic boolean hasSubselectLoadableAttributes() {\n\t\treturn hasSubselectLoadableAttributes;\n\t}\n\n\t@Override\n\tpublic boolean hasCollectionNotReferencingPK() {\n\t\treturn hasCollectionNotReferencingPK;\n\t}\n\n\tprotected void verifyHasNaturalId() {\n\t\tif ( ! hasNaturalIdentifier() ) {\n\t\t\tthrow new HibernateException( \"Entity does not define a natural id : \" + getEntityName() );\n\t\t}\n\t}\n\n\t@Override\n\tpublic Object getNaturalIdentifierSnapshot(Object id, SharedSessionContractImplementor session) {\n\t\tverifyHasNaturalId();\n\t\tif ( CORE_LOGGER.isTraceEnabled() ) {\n\t\t\tCORE_LOGGER.gettingCurrentNaturalIdSnapshot( getEntityName(), id );\n\t\t}\n\t\treturn getNaturalIdLoader().resolveIdToNaturalId( id, session );\n\t}\n\n\n\t@Override\n\tpublic NaturalIdLoader<?> getNaturalIdLoader() {\n\t\tverifyHasNaturalId();\n\t\tif ( naturalIdLoader == null ) {\n\t\t\tnaturalIdLoader = naturalIdMapping.makeLoader( this );","sourceCodeStart":5158,"sourceCodeEnd":5194,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java#L5158-L5194","documentation":"Error \"Entity does not define a natural id : ${entityName}\" thrown in hibernate/hibernate-orm.","triggerScenarios":"Thrown when a natural-id based load is attempted on an entity that declares no natural id.","commonSituations":"See trigger scenarios.","solutions":["Annotate attributes with @NaturalId on the entity before using natural-id APIs, or use identifier-based loading instead."],"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"}