diff --git a/hibernate-core/src/main/java/org/hibernate/service/internal/SessionFactoryServiceRegistryBuilderImpl.java b/hibernate-core/src/main/java/org/hibernate/service/internal/SessionFactoryServiceRegistryBuilderImpl.java index 0bbc3b2392d9..acc0716fcb6b 100644 --- a/hibernate-core/src/main/java/org/hibernate/service/internal/SessionFactoryServiceRegistryBuilderImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/service/internal/SessionFactoryServiceRegistryBuilderImpl.java @@ -5,6 +5,7 @@ package org.hibernate.service.internal; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import org.hibernate.boot.spi.SessionFactoryOptions; @@ -26,6 +27,16 @@ public class SessionFactoryServiceRegistryBuilderImpl implements SessionFactoryS public SessionFactoryServiceRegistryBuilderImpl(ServiceRegistryImplementor parent) { this.parent = parent; + if ( parent != null ) { + for ( Iterator> iterator = initiators.iterator(); iterator.hasNext(); ) { + final SessionFactoryServiceInitiator initiator = iterator.next(); + if ( parent.locateServiceBinding( initiator.getServiceInitiated() ) != null ) { + // Parent takes precedence over the standard service initiators + iterator.remove(); + } + } + + } } /**