hibernate/hibernate-orm · error · IdentifierGenerationException
sessionImplementor is neither Session nor StatelessSession
Error message
sessionImplementor is neither Session nor StatelessSession
What it means
Error "sessionImplementor is neither Session nor StatelessSession" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/id/IdentifierGeneratorHelper.java:140
private static Object identifier(
SharedSessionContractImplementor session,
EntityType foreignValueSourceType,
Object associatedEntity) {
final String associatedEntityName = foreignValueSourceType.getAssociatedEntityName();
try {
return getEntityIdentifierIfNotUnsaved( associatedEntityName, associatedEntity, session );
}
catch (TransientObjectException toe) {
if ( session instanceof Session statefulSession ) {
statefulSession.persist( associatedEntityName, associatedEntity );
return session.getContextEntityIdentifier( associatedEntity );
}
else if ( session instanceof StatelessSession statelessSession ) {
return statelessSession.insert( associatedEntityName, associatedEntity );
}
else {
throw new IdentifierGenerationException("sessionImplementor is neither Session nor StatelessSession");
}
}
}
private static EntityType entityType(String propertyName, EntityPersister entityDescriptor) {
if ( entityDescriptor.getPropertyType( propertyName ) instanceof EntityType entityType ) {
// the normal case
return entityType;
}
else {
// try identifier mapper
final String mapperPropertyName = IDENTIFIER_MAPPER_PROPERTY + "." + propertyName;
return (EntityType) entityDescriptor.getPropertyType( mapperPropertyName );
}
}
public static ImplicitDatabaseObjectNamingStrategy getNamingStrategy(Properties params, ServiceRegistry serviceRegistry) {
final String namingStrategySetting = coalesceSuppliedValues(View on GitHub (pinned to fad1729dce)
Solutions
- This indicates an internal session type mismatch; ensure id generation runs within a standard Session or StatelessSession and upgrade Hibernate if it persists.
When it happens
Trigger: Thrown when the session implementor passed to id generation is of an unexpected type.
Common situations: Typical situations: custom Session/StatelessSession wrappers; internal API misuse by extensions.
AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22).
Data as JSON: /api/errors/861f9d786848bef2.
Report an issue: GitHub.