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() {
@OverrideView on GitHub (pinned to fad1729dce)
Solutions
- 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.