@@ -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
@@ -145,14 +150,13 @@ public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
145150
146151 final class DataSourceSchemaCreatedPublisher implements JpaVendorAdapter {
147152
148- private final AsyncTaskExecutor bootstrapExecutor ;
153+ private final LocalContainerEntityManagerFactoryBean factoryBean ;
149154
150155 private final JpaVendorAdapter delegate ;
151156
152- private DataSourceSchemaCreatedPublisher (AsyncTaskExecutor bootstrapExecutor ,
153- JpaVendorAdapter jpaVendorAdapter ) {
154- this .bootstrapExecutor = bootstrapExecutor ;
155- this .delegate = jpaVendorAdapter ;
157+ private DataSourceSchemaCreatedPublisher (LocalContainerEntityManagerFactoryBean factoryBean ) {
158+ this .factoryBean = factoryBean ;
159+ this .delegate = factoryBean .getJpaVendorAdapter ();
156160 }
157161
158162 @ Override
@@ -191,10 +195,12 @@ public Class<? extends EntityManager> getEntityManagerInterface() {
191195 }
192196
193197 @ Override
194- public void postProcessEntityManagerFactory (EntityManagerFactory emf ) {
195- this .delegate .postProcessEntityManagerFactory (emf );
196- if (this .bootstrapExecutor != null ) {
197- this .bootstrapExecutor .execute (() -> DataSourceInitializedPublisher .this .publishEventIfRequired (emf ));
198+ public void postProcessEntityManagerFactory (EntityManagerFactory entityManagerFactory ) {
199+ this .delegate .postProcessEntityManagerFactory (entityManagerFactory );
200+ AsyncTaskExecutor bootstrapExecutor = this .factoryBean .getBootstrapExecutor ();
201+ if (bootstrapExecutor != null ) {
202+ bootstrapExecutor .execute (() -> DataSourceInitializedPublisher .this
203+ .publishEventIfRequired (this .factoryBean , entityManagerFactory ));
198204 }
199205 }
200206
0 commit comments