{"record":{"id":"c91665563e423649","repo":"hibernate/hibernate-orm","slug":"detached-entity-with-generated-id-id-has-an-u","errorCode":null,"errorMessage":"Detached entity with generated id '${id}' has an uninitialized version value '${version}'","messagePattern":"Detached entity with generated id '(.+?)' has an uninitialized version value '(.+?)'","errorType":"exception","errorClass":"PropertyValueException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java","lineNumber":4622,"sourceCode":"\t\t\tfinal Boolean isUnsaved = versionMapping.getUnsavedStrategy().isUnsaved( version );\n\t\t\tif ( isUnsaved != null ) {\n\t\t\t\tif ( isUnsaved ) {\n\t\t\t\t\tif ( version == null ) {\n\t\t\t\t\t\tfinal var persistenceContext = session.getPersistenceContext();\n\t\t\t\t\t\tif ( persistenceContext.hasLoadContext()\n\t\t\t\t\t\t\t\t&& !persistenceContext.getLoadContexts().isLoadingFinished() ) {\n\t\t\t\t\t\t\t// check if we're currently loading this entity instance, the version\n\t\t\t\t\t\t\t// will be null, but the entity cannot be considered transient\n\t\t\t\t\t\t\tfinal var holder = persistenceContext.getEntityHolder( new EntityKey( id, this ) );\n\t\t\t\t\t\t\tif ( holder != null && holder.isEventuallyInitialized() && holder.getEntity() == entity ) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( getGenerator() != null ) {\n\t\t\t\t\t\tfinal Boolean unsaved = identifierMapping.getUnsavedStrategy().isUnsaved( id );\n\t\t\t\t\t\tif ( unsaved != null && !unsaved ) {\n\t\t\t\t\t\t\tthrow new PropertyValueException(\n\t\t\t\t\t\t\t\t\t\"Detached entity with generated id '\" + id\n\t\t\t\t\t\t\t\t\t\t\t+ \"' has an uninitialized version value '\" + version + \"'\",\n\t\t\t\t\t\t\t\t\tgetEntityName(),\n\t\t\t\t\t\t\t\t\tgetVersionColumnName()\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn isUnsaved;\n\t\t\t}\n\t\t}\n\n\t\t// check the id unsaved-value\n\t\tfinal Boolean result = identifierMapping.getUnsavedStrategy().isUnsaved( id );\n\t\tif ( result != null ) {\n\t\t\treturn result;\n\t\t}\n","sourceCodeStart":4604,"sourceCodeEnd":4640,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java#L4604-L4640","documentation":"Error \"Detached entity with generated id '${id}' has an uninitialized version value '${version}'\" thrown in hibernate/hibernate-orm.","triggerScenarios":"Thrown when merging/reattaching a detached entity whose id is generated but whose version value was never initialized.","commonSituations":"See trigger scenarios.","solutions":["Initialize the version (e.g. set 0 or let Hibernate generate on persist) before merging the detached entity.","Persist new entities with persist() instead of merge() when the id is generated."],"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"}