hibernate/hibernate-orm · error · IdentifierGenerationException

Identifier of entity '" + persister.getEntityName() + "' mus

Error message

Identifier of entity '" + persister.getEntityName() + "' must be manually assigned before calling 'insert()'

What it means

Error "Identifier of entity '" + persister.getEntityName() + "' must be manually assigned before calling 'insert()'" thrown in hibernate/hibernate-orm.

Source

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

				try {
					final var generatedValues = persister.getInsertCoordinator().insert( entity, state, this );
					generatedId = castNonNull( generatedValues ).getGeneratedValue( persister.getIdentifierMapping() );
					id = generatedId;
					success = true;
				}
				catch (ConstraintViolationException cve) {
					throw convertException( cve );
				}
				finally {
					eventMonitor.completeEntityInsertEvent( event, generatedId, persister.getEntityName(), success, this );
				}
				persister.setIdentifier( entity, id, this );
			}
		}
		else { // assigned identifier
			id = persister.getIdentifier( entity, this );
			if ( id == null ) {
				throw new IdentifierGenerationException( "Identifier of entity '" + persister.getEntityName() + "' must be manually assigned before calling 'insert()'" );
			}
			if ( firePreInsert(entity, id, state, persister) ) {
				return id;
			}
			else {
				runInterceptorCallback(
						() -> getInterceptor().onInsert( entity, id, state, persister.getPropertyNames(), persister.getPropertyTypes() ) );
				final var eventMonitor = getEventMonitor();
				final var event = eventMonitor.beginEntityInsertEvent();
				boolean success = false;
				try {
					persister.getInsertCoordinator().insert( entity, id, state, this );
					success = true;
				}
				catch (ConstraintViolationException cve) {
					throw convertException( cve );
				}
				finally {

View on GitHub (pinned to fad1729dce)

Solutions

  1. Set the entity identifier manually before calling statelessSession.insert() for entities with assigned identifiers.

When it happens

Trigger: Thrown at hibernate-core/src/main/java/org/hibernate/internal/StatelessSessionImpl.java:475 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/8a720c5907c2b967. Report an issue: GitHub.