Skip to content

Commit b7be9ce

Browse files
yrodieremarko-bekhta
authored andcommitted
HSEARCH-4482 Avoid uses of Hibernate ORM's org.hibernate.tuple.entity.EntityMetamodel internally where possible
1 parent c86c790 commit b7be9ce

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

mapper/orm/src/main/java/org/hibernate/search/mapper/orm/common/impl/HibernateOrmUtils.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.hibernate.engine.spi.SessionImplementor;
2323
import org.hibernate.mapping.Property;
2424
import org.hibernate.metamodel.MappingMetamodel;
25+
import org.hibernate.metamodel.mapping.EntityMappingType;
2526
import org.hibernate.persister.entity.EntityPersister;
2627
import org.hibernate.search.mapper.orm.logging.impl.Log;
2728
import org.hibernate.search.util.common.annotation.impl.SuppressForbiddenApis;
@@ -82,8 +83,7 @@ public static EntityPersister toRootEntityType(SessionFactoryImplementor session
8283
return metamodel.getEntityDescriptor( rootEntityName );
8384
}
8485

85-
public static EntityPersister toMostSpecificCommonEntitySuperType(MappingMetamodel metamodel,
86-
EntityPersister type1, EntityPersister type2) {
86+
public static EntityPersister toMostSpecificCommonEntitySuperType(EntityPersister type1, EntityPersister type2) {
8787
/*
8888
* We need to rely on Hibernate ORM's SPIs: this is complex stuff.
8989
* For example there may be class hierarchies such as A > B > C
@@ -93,9 +93,8 @@ public static EntityPersister toMostSpecificCommonEntitySuperType(MappingMetamod
9393
*/
9494
EntityPersister superTypeCandidate = type1;
9595
while ( superTypeCandidate != null && !isSuperTypeOf( superTypeCandidate, type2 ) ) {
96-
String superSuperTypeEntityName = superTypeCandidate.getEntityMetamodel().getSuperclass();
97-
superTypeCandidate = superSuperTypeEntityName == null ? null
98-
: metamodel.getEntityDescriptor( superSuperTypeEntityName ).getEntityPersister();
96+
EntityMappingType superSuperType = superTypeCandidate.getSuperMappingType();
97+
superTypeCandidate = superSuperType == null ? null : superSuperType.getEntityPersister();
9998
}
10099
if ( superTypeCandidate == null ) {
101100
throw new AssertionFailure(
@@ -119,7 +118,7 @@ public static boolean targetsAllConcreteSubTypes(SessionFactoryImplementor sessi
119118
MappingMetamodel metamodel = sessionFactory.getMappingMetamodel();
120119
int concreteSubTypesCount = 0;
121120
for ( String subClassEntityName : subClassEntityNames ) {
122-
if ( !metamodel.getEntityDescriptor( subClassEntityName ).getEntityMetamodel().isAbstract() ) {
121+
if ( !metamodel.getEntityDescriptor( subClassEntityName ).isAbstract() ) {
123122
++concreteSubTypesCount;
124123
}
125124
}

mapper/orm/src/main/java/org/hibernate/search/mapper/orm/loading/impl/HibernateOrmEntityIdEntityLoadingStrategy.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import org.hibernate.AssertionFailure;
1313
import org.hibernate.engine.spi.SessionFactoryImplementor;
1414
import org.hibernate.engine.spi.SessionImplementor;
15-
import org.hibernate.metamodel.MappingMetamodel;
1615
import org.hibernate.persister.entity.EntityPersister;
1716
import org.hibernate.search.mapper.orm.common.impl.HibernateOrmUtils;
1817
import org.hibernate.search.mapper.orm.search.loading.EntityLoadingCacheLookupStrategy;
@@ -149,15 +148,14 @@ private PojoSelectionEntityLoader<?> doCreate(EntityPersister entityPersister,
149148

150149
private static EntityPersister toMostSpecificCommonEntitySuperType(SessionImplementor session,
151150
Iterable<? extends LoadingTypeContext<?>> targetEntityTypeContexts) {
152-
MappingMetamodel metamodel = session.getSessionFactory().getMappingMetamodel();
153151
EntityPersister result = null;
154152
for ( LoadingTypeContext<?> targetTypeContext : targetEntityTypeContexts ) {
155153
EntityPersister type = targetTypeContext.entityPersister();
156154
if ( result == null ) {
157155
result = type;
158156
}
159157
else {
160-
result = HibernateOrmUtils.toMostSpecificCommonEntitySuperType( metamodel, result, type );
158+
result = HibernateOrmUtils.toMostSpecificCommonEntitySuperType( result, type );
161159
}
162160
}
163161
return result;

0 commit comments

Comments
 (0)