From 32c66ccd6e3030a4ec1e9ceedbae98bdcb53e11e Mon Sep 17 00:00:00 2001 From: Florian-Rau <57713725+Florian-Rau@users.noreply.github.com> Date: Wed, 5 May 2021 11:25:01 +0200 Subject: [PATCH] Fix casting to the interface instead of the actual implementation This allows injecting a custom SessionFactory wrapper to Grails like it used to work with hibernate 3 --- .../org/grails/orm/hibernate/GrailsHibernateTemplate.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/grails-datastore-gorm-hibernate4/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTemplate.java b/grails-datastore-gorm-hibernate4/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTemplate.java index 320a21fc..17f95845 100644 --- a/grails-datastore-gorm-hibernate4/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTemplate.java +++ b/grails-datastore-gorm-hibernate4/src/main/groovy/org/grails/orm/hibernate/GrailsHibernateTemplate.java @@ -23,9 +23,9 @@ import org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl; import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider; import org.hibernate.engine.spi.SessionImplementor; +import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.event.spi.EventSource; import org.hibernate.exception.GenericJDBCException; -import org.hibernate.internal.SessionFactoryImpl; import org.springframework.dao.DataAccessException; import org.springframework.dao.DataAccessResourceFailureException; import org.springframework.dao.InvalidDataAccessApiUsageException; @@ -77,7 +77,7 @@ public GrailsHibernateTemplate(SessionFactory sessionFactory) { if(sessionFactory instanceof SessionFactoryProxy) { sessionFactory = ((SessionFactoryProxy)sessionFactory).getCurrentSessionFactory(); } - ConnectionProvider connectionProvider = ((SessionFactoryImpl) sessionFactory).getServiceRegistry().getService(ConnectionProvider.class); + ConnectionProvider connectionProvider = ((SessionFactoryImplementor) sessionFactory).getServiceRegistry().getService(ConnectionProvider.class); if(connectionProvider instanceof DatasourceConnectionProviderImpl) { jdbcExceptionTranslator = new SQLErrorCodeSQLExceptionTranslator(((DatasourceConnectionProviderImpl) connectionProvider).getDataSource()); }