@@ -100,6 +100,8 @@ public class LocalSessionFactoryBean extends HibernateExceptionTranslator
100
100
101
101
private AsyncTaskExecutor bootstrapExecutor ;
102
102
103
+ private boolean metadataSourcesAccessed = false ;
104
+
103
105
private MetadataSources metadataSources ;
104
106
105
107
private ResourcePatternResolver resourcePatternResolver ;
@@ -340,6 +342,7 @@ public void setBootstrapExecutor(AsyncTaskExecutor bootstrapExecutor) {
340
342
*/
341
343
public void setMetadataSources (MetadataSources metadataSources ) {
342
344
Assert .notNull (metadataSources , "MetadataSources must not be null" );
345
+ this .metadataSourcesAccessed = true ;
343
346
this .metadataSources = metadataSources ;
344
347
}
345
348
@@ -352,6 +355,7 @@ public void setMetadataSources(MetadataSources metadataSources) {
352
355
* @see LocalSessionFactoryBuilder#LocalSessionFactoryBuilder(DataSource, ResourceLoader, MetadataSources)
353
356
*/
354
357
public MetadataSources getMetadataSources () {
358
+ this .metadataSourcesAccessed = true ;
355
359
if (this .metadataSources == null ) {
356
360
BootstrapServiceRegistryBuilder builder = new BootstrapServiceRegistryBuilder ();
357
361
if (this .resourcePatternResolver != null ) {
@@ -386,6 +390,11 @@ public ResourceLoader getResourceLoader() {
386
390
387
391
@ Override
388
392
public void afterPropertiesSet () throws IOException {
393
+ if (this .metadataSources != null && !this .metadataSourcesAccessed ) {
394
+ // Repeated initialization with no user-customized MetadataSources -> clear it.
395
+ this .metadataSources = null ;
396
+ }
397
+
389
398
LocalSessionFactoryBuilder sfb = new LocalSessionFactoryBuilder (
390
399
this .dataSource , getResourceLoader (), getMetadataSources ());
391
400
0 commit comments