Align currentStatelessSession() implementation with currentSession()

See gh-7184
This commit is contained in:
Juergen Hoeller 2025-10-13 14:17:07 +02:00
parent 252bb8dac7
commit b4dcb36b21
1 changed files with 11 additions and 8 deletions

View File

@ -171,9 +171,6 @@ public class SpringSessionContext implements CurrentSessionContext {
* @return the current StatelessSession
*/
public static StatelessSession currentStatelessSession(SessionFactory sessionFactory) {
if (!TransactionSynchronizationManager.isSynchronizationActive()) {
throw new HibernateException("Could not obtain transaction-synchronized Session for current thread");
}
Object value = TransactionSynchronizationManager.getResource(sessionFactory);
if (value instanceof StatelessSession statelessSession) {
return statelessSession;
@ -185,14 +182,20 @@ public class SpringSessionContext implements CurrentSessionContext {
}
holder = sessionHolder;
}
StatelessSession session = sessionFactory.openStatelessSession(determineConnection(sessionFactory, holder));
if (holder != null) {
holder.setStatelessSession(session);
if (TransactionSynchronizationManager.isSynchronizationActive()) {
StatelessSession session = sessionFactory.openStatelessSession(determineConnection(sessionFactory, holder));
if (holder != null) {
holder.setStatelessSession(session);
}
else {
bindSessionHolder(sessionFactory, new SessionHolder(session));
}
return session;
}
else {
bindSessionHolder(sessionFactory, new SessionHolder(session));
throw new HibernateException("Could not obtain transaction-synchronized Session for current thread");
}
return session;
}
private static void bindSessionHolder(SessionFactory sessionFactory, SessionHolder holder) {