@@ -469,11 +469,38 @@ public abstract class AbstractEntityPersister
469
469
private List <UniqueKeyEntry > uniqueKeyEntries = null ; //lazily initialized
470
470
private ConcurrentHashMap <String ,SingleIdArrayLoadPlan > nonLazyPropertyLoadPlansByName ;
471
471
472
+ /**
473
+ * A factory for the creation of an EntityMetamodel.
474
+ * <p>
475
+ * Hibernate Reactive uses it to pass its own entity metamodel class
476
+ * and adapt the identifier generators.
477
+ */
478
+ public static class EntityMetamodelFactory {
479
+ public EntityMetamodel createEntityMetamodel (
480
+ PersistentClass persistentClass ,
481
+ EntityPersister persister ,
482
+ RuntimeModelCreationContext creationContext ) {
483
+ return new EntityMetamodel ( persistentClass , persister , creationContext );
484
+ }
485
+ }
486
+
472
487
public AbstractEntityPersister (
473
488
final PersistentClass persistentClass ,
474
489
final EntityDataAccess cacheAccessStrategy ,
475
490
final NaturalIdDataAccess naturalIdRegionAccessStrategy ,
476
491
final RuntimeModelCreationContext creationContext ) throws HibernateException {
492
+ this ( persistentClass , cacheAccessStrategy , naturalIdRegionAccessStrategy , creationContext , new EntityMetamodelFactory () );
493
+ }
494
+
495
+ /*
496
+ * Used by Hibernate Reactive
497
+ */
498
+ public AbstractEntityPersister (
499
+ final PersistentClass persistentClass ,
500
+ final EntityDataAccess cacheAccessStrategy ,
501
+ final NaturalIdDataAccess naturalIdRegionAccessStrategy ,
502
+ final RuntimeModelCreationContext creationContext ,
503
+ final EntityMetamodelFactory entityMetamodelFactory ) throws HibernateException {
477
504
this .jpaEntityName = persistentClass .getJpaEntityName ();
478
505
479
506
//set it here, but don't call it, since it's still uninitialized!
@@ -500,7 +527,7 @@ public AbstractEntityPersister(
500
527
isLazyPropertiesCacheable = true ;
501
528
}
502
529
503
- entityMetamodel = new EntityMetamodel ( persistentClass , this , creationContext );
530
+ entityMetamodel = entityMetamodelFactory . createEntityMetamodel ( persistentClass , this , creationContext );
504
531
505
532
entityEntryFactory = entityMetamodel .isMutable ()
506
533
? MutableEntityEntryFactory .INSTANCE
0 commit comments