Restore Hibernate ORM 5.1 compatibility in HibernateTransactionManager

Issue: SPR-17557
This commit is contained in:
Juergen Hoeller 2018-12-03 18:27:30 +01:00
parent 15f8863f19
commit 0841dc5f99
1 changed files with 4 additions and 1 deletions

View File

@ -541,7 +541,10 @@ public class HibernateTransactionManager extends AbstractPlatformTransactionMana
// Register the Hibernate Session's JDBC Connection for the DataSource, if set.
if (getDataSource() != null) {
SessionImplementor sessionImpl = (SessionImplementor) session;
ConnectionHolder conHolder = new ConnectionHolder(sessionImpl::connection);
// The following needs to use a lambda expression instead of a method reference
// for compatibility with Hibernate ORM <5.2 where connection() is defined on
// SessionImplementor itself instead of on SharedSessionContractImplementor...
ConnectionHolder conHolder = new ConnectionHolder(() -> sessionImpl.connection());
if (timeout != TransactionDefinition.TIMEOUT_DEFAULT) {
conHolder.setTimeoutInSeconds(timeout);
}