@@ -65,8 +65,7 @@ public Object postProcessBeforeInitialization(Object bean, String beanName) thro
6565 if (bean instanceof LocalContainerEntityManagerFactoryBean ) {
6666 LocalContainerEntityManagerFactoryBean factory = (LocalContainerEntityManagerFactoryBean ) bean ;
6767 if (factory .getBootstrapExecutor () != null && factory .getJpaVendorAdapter () != null ) {
68- this .schemaCreatedPublisher = new DataSourceSchemaCreatedPublisher (factory .getBootstrapExecutor (),
69- factory .getJpaVendorAdapter ());
68+ this .schemaCreatedPublisher = new DataSourceSchemaCreatedPublisher (factory );
7069 factory .setJpaVendorAdapter (this .schemaCreatedPublisher );
7170 }
7271 }
@@ -86,21 +85,27 @@ public Object postProcessAfterInitialization(Object bean, String beanName) throw
8685 this .hibernateProperties = (HibernateProperties ) bean ;
8786 }
8887 if (bean instanceof LocalContainerEntityManagerFactoryBean && this .schemaCreatedPublisher == null ) {
89- LocalContainerEntityManagerFactoryBean factory = (LocalContainerEntityManagerFactoryBean ) bean ;
90- publishEventIfRequired (factory .getNativeEntityManagerFactory ());
88+ LocalContainerEntityManagerFactoryBean factoryBean = (LocalContainerEntityManagerFactoryBean ) bean ;
89+ EntityManagerFactory entityManagerFactory = factoryBean .getNativeEntityManagerFactory ();
90+ publishEventIfRequired (factoryBean , entityManagerFactory );
9191 }
9292 return bean ;
9393 }
9494
95- private void publishEventIfRequired (EntityManagerFactory entityManagerFactory ) {
96- DataSource dataSource = findDataSource (entityManagerFactory );
95+ private void publishEventIfRequired (LocalContainerEntityManagerFactoryBean factoryBean ,
96+ EntityManagerFactory entityManagerFactory ) {
97+ DataSource dataSource = findDataSource (factoryBean , entityManagerFactory );
9798 if (dataSource != null && isInitializingDatabase (dataSource )) {
9899 this .applicationContext .publishEvent (new DataSourceSchemaCreatedEvent (dataSource ));
99100 }
100101 }
101102
102- private DataSource findDataSource (EntityManagerFactory entityManagerFactory ) {
103+ private DataSource findDataSource (LocalContainerEntityManagerFactoryBean factoryBean ,
104+ EntityManagerFactory entityManagerFactory ) {
103105 Object dataSource = entityManagerFactory .getProperties ().get ("javax.persistence.nonJtaDataSource" );
106+ if (dataSource == null ) {
107+ dataSource = factoryBean .getPersistenceUnitInfo ().getNonJtaDataSource ();
108+ }
104109 return (dataSource instanceof DataSource ) ? (DataSource ) dataSource : this .dataSource ;
105110 }
106111
@@ -142,14 +147,13 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
142147
143148 final class DataSourceSchemaCreatedPublisher implements JpaVendorAdapter {
144149
145- private final AsyncTaskExecutor bootstrapExecutor ;
150+ private final LocalContainerEntityManagerFactoryBean factoryBean ;
146151
147152 private final JpaVendorAdapter delegate ;
148153
149- private DataSourceSchemaCreatedPublisher (AsyncTaskExecutor bootstrapExecutor ,
150- JpaVendorAdapter jpaVendorAdapter ) {
151- this .bootstrapExecutor = bootstrapExecutor ;
152- this .delegate = jpaVendorAdapter ;
154+ private DataSourceSchemaCreatedPublisher (LocalContainerEntityManagerFactoryBean factoryBean ) {
155+ this .factoryBean = factoryBean ;
156+ this .delegate = factoryBean .getJpaVendorAdapter ();
153157 }
154158
155159 @ Override
@@ -188,10 +192,12 @@ public Class<? extends EntityManager> getEntityManagerInterface() {
188192 }
189193
190194 @ Override
191- public void postProcessEntityManagerFactory (EntityManagerFactory emf ) {
192- this .delegate .postProcessEntityManagerFactory (emf );
193- if (this .bootstrapExecutor != null ) {
194- this .bootstrapExecutor .execute (() -> DataSourceInitializedPublisher .this .publishEventIfRequired (emf ));
195+ public void postProcessEntityManagerFactory (EntityManagerFactory entityManagerFactory ) {
196+ this .delegate .postProcessEntityManagerFactory (entityManagerFactory );
197+ AsyncTaskExecutor bootstrapExecutor = this .factoryBean .getBootstrapExecutor ();
198+ if (bootstrapExecutor != null ) {
199+ bootstrapExecutor .execute (() -> DataSourceInitializedPublisher .this
200+ .publishEventIfRequired (this .factoryBean , entityManagerFactory ));
195201 }
196202 }
197203
0 commit comments