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

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