hibernate/hibernate-orm · error · SessionException

Cannot simultaneously share transaction context and specify

Error message

Cannot simultaneously share transaction context and specify connection

What it means

Error "Cannot simultaneously share transaction context and specify connection" thrown in hibernate/hibernate-orm.

Source

Thrown at hibernate-core/src/main/java/org/hibernate/internal/AbstractSharedSessionContract.java:312

		interceptor = interpret( options.resolveInterceptor( factory ) );
		jdbcTimeZone = options.getJdbcTimeZone();

		sessionEventsManager = createSessionEventsManager( factoryOptions, options );
		entityNameResolver = new CoordinatingEntityNameResolver( factory, interceptor, this );

		criteriaCopyTreeEnabled = factoryOptions.isCriteriaCopyTreeEnabled();
		criteriaPlanCacheEnabled = factoryOptions.isCriteriaPlanCacheEnabled();
		nativeJdbcParametersIgnored = factoryOptions.getNativeJdbcParametersIgnored();

		final var statementInspector = interpret( options.getStatementInspector() );

		changesetIdSupplier = initializeChangesetIdSupplier( factory );

		if ( options instanceof SharedSessionCreationOptions sharedOptions
				&& sharedOptions.isTransactionCoordinatorShared() ) {
			isTransactionCoordinatorShared = true;
			if ( options.getConnection() != null ) {
				throw new SessionException( "Cannot simultaneously share transaction context and specify connection" );
			}

			final var transactionCoordinator = sharedOptions.getTransactionCoordinator();
			final var jdbcCoordinator = sharedOptions.getJdbcCoordinator();
			assert transactionCoordinator != null;
			assert jdbcCoordinator != null;
			this.transactionCoordinator = transactionCoordinator;
			this.jdbcCoordinator = jdbcCoordinator;

			// todo : "wrap" the transaction to no-op commit/rollback attempts?
			currentHibernateTransaction = sharedOptions.getTransaction();
			connectionHandlingMode = this.jdbcCoordinator.getLogicalConnection().getConnectionHandlingMode();
			autoJoinTransactions = false;
			jdbcSessionContext = createJdbcSessionContext( options.getStatementObserver(), statementInspector );
			logInconsistentOptions( sharedOptions );
			addSharedSessionTransactionObserver( this.transactionCoordinator );
			sharedOptions.registerParentSessionObserver( new ParentSessionObserver() {
				@Override

View on GitHub (pinned to fad1729dce)

Solutions

  1. Either share the transaction context or pass an explicit Connection when building the session — not both.

When it happens

Trigger: Thrown when a session is built both sharing a transaction context and supplying an explicit connection.

Common situations: Typical situations: combining SessionBuilder.connection() with shared transaction-context options; conflicting session open options.


AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22). Data as JSON: /api/errors/4891eff4ef12d07c. Report an issue: GitHub.