hibernate/hibernate-orm · error · IllegalArgumentException

Object passed to upsert() has no identifier

Error message

Object passed to upsert() has no identifier

What it means

Error "Object passed to upsert() has no identifier" thrown in hibernate/hibernate-orm.

Source

Thrown at hibernate-core/src/main/java/org/hibernate/internal/StatelessSessionImpl.java:852

				return state[persister.getVersionPropertyIndex()];
			}
			else {
				final Object newVersion = incrementVersion( entity, oldVersion, persister, this );
				setVersion( state, newVersion, persister );
				persister.setValues( entity, state );
				return oldVersion;
			}
		}
		else {
			return null;
		}
	}

	// Hibernate Reactive calls this
	protected Object idToUpsert(Object entity, EntityPersister persister) {
		final Object id = persister.getIdentifier( entity, this );
		if ( id == null ) {
			throw new IllegalArgumentException( "Object passed to upsert() has no identifier" );
		}
		final Boolean unsaved =
				persister.getIdentifierMapping()
						.getUnsavedStrategy()
						.isUnsaved( id );
		if ( unsaved != null && unsaved ) {
			throw new TransientObjectException( "Object passed to upsert() has an unsaved identifier value: "
					+ persister.getEntityName() );
		}
		return id;
	}

	// event processing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

	// Hibernate Reactive may need to call this
	protected boolean firePreInsert(Object entity, Object id, Object[] state, EntityPersister persister) {
		final var callbacks = persister.getEntityCallbacks();
		final boolean hasPrePersistCallbacks = callbacks.hasRegisteredCallbacks( CallbackType.PRE_PERSIST );

View on GitHub (pinned to fad1729dce)

Solutions

  1. Set a non-null identifier on the entity before calling upsert(), or use insert() for new entities without ids.

When it happens

Trigger: Thrown at hibernate-core/src/main/java/org/hibernate/internal/StatelessSessionImpl.java:852 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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