hibernate/hibernate-orm · error · IdentifierGenerationException
Identifier generator must generate on insert
Error message
Identifier generator must generate on insert
What it means
Error "Identifier generator must generate on insert" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/internal/StatelessSessionImpl.java:417
catch ( RuntimeException e ) {
throw getExceptionConverter().convert( e );
}
}
private Object doInsert(String entityName, Object entity) {
checkNotReadOnly();
final var persister = getEntityPersister( entityName, entity );
final Object id;
final Object[] state = persister.getValues( entity );
if ( persister.isVersioned() ) {
if ( seedVersion( entity, state, persister, this ) ) {
persister.setValues( entity, state );
}
}
final var generator = persister.getGenerator();
if ( generator.generatedBeforeExecution( entity, this ) ) {
if ( !generator.generatesOnInsert() ) {
throw new IdentifierGenerationException( "Identifier generator must generate on insert" );
}
final Object currentValue = generator.allowAssignedIdentifiers() ? persister.getIdentifier( entity ) : null;
id = ( (BeforeExecutionGenerator) generator ).generate( this, entity, currentValue, INSERT );
persister.setIdentifier( entity, id, this );
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) {View on GitHub (pinned to fad1729dce)
Solutions
- Assign the identifier manually before calling insert(), or use an id generator that generates on insert (IDENTITY) instead of post-insert generators.
- For StatelessSession.insert with non-insert generators, set the id explicitly.
When it happens
Trigger: Thrown at hibernate-core/src/main/java/org/hibernate/internal/StatelessSessionImpl.java:417 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/2da6e1c7ff395995.
Report an issue: GitHub.