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
- 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.