hibernate/hibernate-orm · error · PersistentObjectException

Uninitialized proxy passed to persist()

Error message

Uninitialized proxy passed to persist()

What it means

Error "Uninitialized proxy passed to persist()" thrown in hibernate/hibernate-orm.

Source

Thrown at hibernate-core/src/main/java/org/hibernate/event/internal/DefaultPersistEventListener.java:65

	@Override
	public void onPersist(@Nonnull PersistEvent event) {
		onPersist( event, PersistContext.create() );
	}

	/**
	 * Handle the given persist event.
	 *
	 * @param event The persist event to be handled
	 *
	 */
	@Override
	public void onPersist(@Nonnull PersistEvent event, @Nonnull PersistContext createCache) {
		final Object object = event.getObject();
		final var lazyInitializer = extractLazyInitializer( object );
		if ( lazyInitializer != null ) {
			if ( lazyInitializer.isUninitialized() ) {
				if ( lazyInitializer.getSession() != event.getSession() ) {
					throw new PersistentObjectException( "Uninitialized proxy passed to persist()" );
				}
			}
			else {
				persist( event, createCache, lazyInitializer.getImplementation() );
			}
		}
		else {
			persist( event, createCache, object );
		}
	}

	private void persist(@Nonnull PersistEvent event, @Nonnull PersistContext createCache, @Nonnull Object entity) {
		final var source = event.getSession();
		final var entityEntry = source.getPersistenceContextInternal().getEntry( entity );
		final String entityName = entityName( event, entity, entityEntry );
		switch ( getEntityState( entity, entityName, entityEntry, source, true ) ) {
			case DETACHED:
				throw new PersistentObjectException( "Detached entity passed to persist: "

View on GitHub (pinned to fad1729dce)

Solutions

  1. Initialize the proxy (Hibernate.initialize) or load the real entity before calling persist().
  2. Use persist() only on new transient instances; use merge() for existing/possibly-proxied entities.

When it happens

Trigger: Thrown when an uninitialized proxy is passed to an operation that requires the real, initialized instance.

Common situations: Typical situations: calling persist()/evict() with a lazy proxy from getReference(); session closed before the proxy was initialized.


AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22). Data as JSON: /api/errors/e3db7f7a76169c73. Report an issue: GitHub.