{"record":{"id":"e3db7f7a76169c73","repo":"hibernate/hibernate-orm","slug":"uninitialized-proxy-passed-to-persist","errorCode":null,"errorMessage":"Uninitialized proxy passed to persist()","messagePattern":"Uninitialized proxy passed to persist\\(\\)","errorType":"exception","errorClass":"PersistentObjectException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/event/internal/DefaultPersistEventListener.java","lineNumber":65,"sourceCode":"\t@Override\n\tpublic void onPersist(@Nonnull PersistEvent event) {\n\t\tonPersist( event, PersistContext.create() );\n\t}\n\n\t/**\n\t * Handle the given persist event.\n\t *\n\t * @param event The persist event to be handled\n\t *\n\t */\n\t@Override\n\tpublic void onPersist(@Nonnull PersistEvent event, @Nonnull PersistContext createCache) {\n\t\tfinal Object object = event.getObject();\n\t\tfinal var lazyInitializer = extractLazyInitializer( object );\n\t\tif ( lazyInitializer != null ) {\n\t\t\tif ( lazyInitializer.isUninitialized() ) {\n\t\t\t\tif ( lazyInitializer.getSession() != event.getSession() ) {\n\t\t\t\t\tthrow new PersistentObjectException( \"Uninitialized proxy passed to persist()\" );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tpersist( event, createCache, lazyInitializer.getImplementation() );\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tpersist( event, createCache, object );\n\t\t}\n\t}\n\n\tprivate void persist(@Nonnull PersistEvent event, @Nonnull PersistContext createCache, @Nonnull Object entity) {\n\t\tfinal var source = event.getSession();\n\t\tfinal var entityEntry = source.getPersistenceContextInternal().getEntry( entity );\n\t\tfinal String entityName = entityName( event, entity, entityEntry );\n\t\tswitch ( getEntityState( entity, entityName, entityEntry, source, true ) ) {\n\t\t\tcase DETACHED:\n\t\t\t\tthrow new PersistentObjectException( \"Detached entity passed to persist: \"","sourceCodeStart":47,"sourceCodeEnd":83,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/event/internal/DefaultPersistEventListener.java#L47-L83","documentation":"Error \"Uninitialized proxy passed to persist()\" thrown in hibernate/hibernate-orm.","triggerScenarios":"Thrown when an uninitialized proxy is passed to an operation that requires the real, initialized instance.","commonSituations":"Typical situations: calling persist()/evict() with a lazy proxy from getReference(); session closed before the proxy was initialized.","solutions":["Initialize the proxy (Hibernate.initialize) or load the real entity before calling persist().","Use persist() only on new transient instances; use merge() for existing/possibly-proxied entities."],"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"}