Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public void test() {
// Hibernate Search started successfully.
// Check that there actually is a backref:
MetamodelImplementor metamodel = sessionFactory.unwrap( SessionFactoryImplementor.class ).getMetamodel();
assertThat( metamodel.entityPersister( IndexedEntity.class ).getEntityMetamodel().getPropertyNames() )
assertThat( metamodel.entityPersister( IndexedEntity.class ).getPropertyNames() )
.contains( "_containing_fk_containingidBackref" )
.contains( "_containingIndexBackref" );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public void test() {
// Hibernate Search started successfully.
// Check that there actually is a synthetic property:
MetamodelImplementor metamodel = sessionFactory.unwrap( SessionFactoryImplementor.class ).getMetamodel();
assertThat( metamodel.entityPersister( ContainedEntity.class ).getEntityMetamodel().getPropertyNames() )
assertThat( metamodel.entityPersister( ContainedEntity.class ).getPropertyNames() )
.contains( "_" + IndexedEntity.class.getName().replace( '.', '_' ) + "_contained" );

// If we get here the bug was solved, but let's at least check that indexing works
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,27 +107,6 @@ public static EntityPersister toMostSpecificCommonEntitySuperType(MetamodelImple
return superTypeCandidate;
}

public static boolean hasAtMostOneConcreteSubType(SessionFactoryImplementor sessionFactory,
EntityPersister parentType) {
@SuppressWarnings("unchecked")
Set<String> subClassEntityNames = parentType.getEntityMetamodel().getSubclassEntityNames();
// Quick check to return true immediately if there's only one type
if ( subClassEntityNames.size() == 1 ) {
return true;
}

MetamodelImplementor metamodel = sessionFactory.getMetamodel();
int concreteSubTypesCount = 0;
for ( String subClassEntityName : subClassEntityNames ) {
if ( !metamodel.entityPersister( subClassEntityName ).getEntityMetamodel().isAbstract() ) {
if ( ++concreteSubTypesCount > 1 ) {
return false;
}
}
}
return true;
}

public static boolean targetsAllConcreteSubTypes(SessionFactoryImplementor sessionFactory,
EntityPersister parentType, Collection<?> targetConcreteSubTypes) {
@SuppressWarnings("unchecked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.query.Query;
import org.hibernate.search.engine.common.timing.Deadline;
import org.hibernate.search.mapper.orm.common.impl.HibernateOrmUtils;
import org.hibernate.search.mapper.orm.search.query.spi.HibernateOrmSearchQueryHints;
import org.hibernate.search.mapper.pojo.loading.spi.PojoSelectionEntityLoader;

Expand All @@ -23,16 +22,13 @@ abstract class AbstractHibernateOrmSelectionEntityLoader<E> implements PojoSelec
protected final EntityPersister entityPersister;
protected final LoadingSessionContext sessionContext;
protected final MutableEntityLoadingOptions loadingOptions;
protected final boolean singleConcreteTypeInHierarchy;
protected final TypeQueryFactory<E, ?> queryFactory;

public AbstractHibernateOrmSelectionEntityLoader(EntityPersister entityPersister, TypeQueryFactory<E, ?> queryFactory,
LoadingSessionContext sessionContext, MutableEntityLoadingOptions loadingOptions) {
this.entityPersister = entityPersister;
this.sessionContext = sessionContext;
this.loadingOptions = loadingOptions;
this.singleConcreteTypeInHierarchy = HibernateOrmUtils.hasAtMostOneConcreteSubType(
sessionContext.session().getSessionFactory(), entityPersister );
this.queryFactory = queryFactory;
}

Expand Down
12 changes: 6 additions & 6 deletions orm6/integrationtest/mapper/orm/ant-src-changes.patch
Original file line number Diff line number Diff line change
Expand Up @@ -879,7 +879,7 @@ index c032664bb9..4d205fdccf 100644
.withProperty( AvailableSettings.USE_SECOND_LEVEL_CACHE, "true" )
.withAnnotatedTypes( IndexedEntity.class );
diff --git a/test/java/org/hibernate/search/integrationtest/mapper/orm/model/BackRefPropertyIT.java b/test/java/org/hibernate/search/integrationtest/mapper/orm/model/BackRefPropertyIT.java
index 1bf135620e..97da0239d0 100644
index 798418f3a9..bbfc99e232 100644
--- a/test/java/org/hibernate/search/integrationtest/mapper/orm/model/BackRefPropertyIT.java
+++ b/test/java/org/hibernate/search/integrationtest/mapper/orm/model/BackRefPropertyIT.java
@@ -19,7 +19,7 @@
Expand All @@ -896,9 +896,9 @@ index 1bf135620e..97da0239d0 100644
// Hibernate Search started successfully.
// Check that there actually is a backref:
- MetamodelImplementor metamodel = sessionFactory.unwrap( SessionFactoryImplementor.class ).getMetamodel();
- assertThat( metamodel.entityPersister( IndexedEntity.class ).getEntityMetamodel().getPropertyNames() )
- assertThat( metamodel.entityPersister( IndexedEntity.class ).getPropertyNames() )
+ MappingMetamodel metamodel = sessionFactory.unwrap( SessionFactoryImplementor.class ).getMappingMetamodel();
+ assertThat( metamodel.getEntityDescriptor( IndexedEntity.class ).getEntityMetamodel().getPropertyNames() )
+ assertThat( metamodel.getEntityDescriptor( IndexedEntity.class ).getPropertyNames() )
.contains( "_containing_fk_containingidBackref" )
.contains( "_containingIndexBackref" );

Expand Down Expand Up @@ -942,7 +942,7 @@ index d110dbb171..0796b95350 100644

@OneToMany(mappedBy = "genericProperty")
diff --git a/test/java/org/hibernate/search/integrationtest/mapper/orm/model/SyntheticPropertyIT.java b/test/java/org/hibernate/search/integrationtest/mapper/orm/model/SyntheticPropertyIT.java
index fd7d546f8f..42625565bc 100644
index 43bed0bfd6..16115098af 100644
--- a/test/java/org/hibernate/search/integrationtest/mapper/orm/model/SyntheticPropertyIT.java
+++ b/test/java/org/hibernate/search/integrationtest/mapper/orm/model/SyntheticPropertyIT.java
@@ -19,7 +19,7 @@
Expand All @@ -959,9 +959,9 @@ index fd7d546f8f..42625565bc 100644
// Hibernate Search started successfully.
// Check that there actually is a synthetic property:
- MetamodelImplementor metamodel = sessionFactory.unwrap( SessionFactoryImplementor.class ).getMetamodel();
- assertThat( metamodel.entityPersister( ContainedEntity.class ).getEntityMetamodel().getPropertyNames() )
- assertThat( metamodel.entityPersister( ContainedEntity.class ).getPropertyNames() )
+ MappingMetamodel metamodel = sessionFactory.unwrap( SessionFactoryImplementor.class ).getMappingMetamodel();
+ assertThat( metamodel.getEntityDescriptor( ContainedEntity.class ).getEntityMetamodel().getPropertyNames() )
+ assertThat( metamodel.getEntityDescriptor( ContainedEntity.class ).getPropertyNames() )
.contains( "_" + IndexedEntity.class.getName().replace( '.', '_' ) + "_contained" );

// If we get here the bug was solved, but let's at least check that indexing works
Expand Down
57 changes: 28 additions & 29 deletions orm6/mapper/orm/ant-src-changes.patch
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,20 @@ index 289a060c28..60e392d528 100644
.build();
// Orchestrate bootstrap and shutdown
diff --git a/main/java/org/hibernate/search/mapper/orm/common/impl/HibernateOrmUtils.java b/main/java/org/hibernate/search/mapper/orm/common/impl/HibernateOrmUtils.java
index d61af877f4..116de2331f 100644
index d6ed099098..e3fee26f2c 100644
--- a/main/java/org/hibernate/search/mapper/orm/common/impl/HibernateOrmUtils.java
+++ b/main/java/org/hibernate/search/mapper/orm/common/impl/HibernateOrmUtils.java
@@ -21,7 +21,7 @@
@@ -21,7 +21,8 @@
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.mapping.Property;
-import org.hibernate.metamodel.spi.MetamodelImplementor;
+import org.hibernate.metamodel.MappingMetamodel;
+import org.hibernate.metamodel.mapping.EntityMappingType;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.search.mapper.orm.logging.impl.Log;
import org.hibernate.search.util.common.annotation.impl.SuppressForbiddenApis;
@@ -77,12 +77,12 @@ public static EntityPersister toRootEntityType(SessionFactoryImplementor session
@@ -77,13 +78,12 @@ public static EntityPersister toRootEntityType(SessionFactoryImplementor session
* where A and C are entity types and B is a mapped superclass.
* So we need to exclude non-entity types, and for that we need the Hibernate ORM metamodel.
*/
Expand All @@ -58,33 +59,24 @@ index d61af877f4..116de2331f 100644
}

- public static EntityPersister toMostSpecificCommonEntitySuperType(MetamodelImplementor metamodel,
+ public static EntityPersister toMostSpecificCommonEntitySuperType(MappingMetamodel metamodel,
EntityPersister type1, EntityPersister type2) {
- EntityPersister type1, EntityPersister type2) {
+ public static EntityPersister toMostSpecificCommonEntitySuperType(EntityPersister type1, EntityPersister type2) {
/*
* We need to rely on Hibernate ORM's SPIs: this is complex stuff.
@@ -95,7 +95,7 @@ public static EntityPersister toMostSpecificCommonEntitySuperType(MetamodelImple
* For example there may be class hierarchies such as A > B > C
@@ -93,9 +93,8 @@ public static EntityPersister toMostSpecificCommonEntitySuperType(MetamodelImple
*/
EntityPersister superTypeCandidate = type1;
while ( superTypeCandidate != null && !isSuperTypeOf( superTypeCandidate, type2 ) ) {
String superSuperTypeEntityName = superTypeCandidate.getEntityMetamodel().getSuperclass();
superTypeCandidate = superSuperTypeEntityName == null ? null
- String superSuperTypeEntityName = superTypeCandidate.getEntityMetamodel().getSuperclass();
- superTypeCandidate = superSuperTypeEntityName == null ? null
- : metamodel.entityPersister( superSuperTypeEntityName ).getEntityPersister();
+ : metamodel.getEntityDescriptor( superSuperTypeEntityName ).getEntityPersister();
+ EntityMappingType superSuperType = superTypeCandidate.getSuperMappingType();
+ superTypeCandidate = superSuperType == null ? null : superSuperType.getEntityPersister();
}
if ( superTypeCandidate == null ) {
throw new AssertionFailure(
@@ -116,10 +116,10 @@ public static boolean hasAtMostOneConcreteSubType(SessionFactoryImplementor sess
return true;
}

- MetamodelImplementor metamodel = sessionFactory.getMetamodel();
+ MappingMetamodel metamodel = sessionFactory.getMappingMetamodel();
int concreteSubTypesCount = 0;
for ( String subClassEntityName : subClassEntityNames ) {
- if ( !metamodel.entityPersister( subClassEntityName ).getEntityMetamodel().isAbstract() ) {
+ if ( !metamodel.getEntityDescriptor( subClassEntityName ).getEntityMetamodel().isAbstract() ) {
if ( ++concreteSubTypesCount > 1 ) {
return false;
}
@@ -137,10 +137,10 @@ public static boolean targetsAllConcreteSubTypes(SessionFactoryImplementor sessi
@@ -116,10 +115,10 @@ public static boolean targetsAllConcreteSubTypes(SessionFactoryImplementor sessi
return true;
}

Expand All @@ -93,32 +85,39 @@ index d61af877f4..116de2331f 100644
int concreteSubTypesCount = 0;
for ( String subClassEntityName : subClassEntityNames ) {
- if ( !metamodel.entityPersister( subClassEntityName ).getEntityMetamodel().isAbstract() ) {
+ if ( !metamodel.getEntityDescriptor( subClassEntityName ).getEntityMetamodel().isAbstract() ) {
+ if ( !metamodel.getEntityDescriptor( subClassEntityName ).isAbstract() ) {
++concreteSubTypesCount;
}
}
diff --git a/main/java/org/hibernate/search/mapper/orm/loading/impl/HibernateOrmEntityIdEntityLoadingStrategy.java b/main/java/org/hibernate/search/mapper/orm/loading/impl/HibernateOrmEntityIdEntityLoadingStrategy.java
index 21503d08be..4d35daf39e 100644
index 21503d08be..45b9fc0a50 100644
--- a/main/java/org/hibernate/search/mapper/orm/loading/impl/HibernateOrmEntityIdEntityLoadingStrategy.java
+++ b/main/java/org/hibernate/search/mapper/orm/loading/impl/HibernateOrmEntityIdEntityLoadingStrategy.java
@@ -12,7 +12,7 @@
@@ -12,7 +12,6 @@
import org.hibernate.AssertionFailure;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SessionImplementor;
-import org.hibernate.metamodel.spi.MetamodelImplementor;
+import org.hibernate.metamodel.MappingMetamodel;
import org.hibernate.persister.entity.EntityPersister;
import org.hibernate.search.mapper.orm.common.impl.HibernateOrmUtils;
import org.hibernate.search.mapper.orm.search.loading.EntityLoadingCacheLookupStrategy;
@@ -149,7 +149,7 @@ private PojoSelectionEntityLoader<?> doCreate(EntityPersister entityPersister,
@@ -149,7 +148,6 @@ private PojoSelectionEntityLoader<?> doCreate(EntityPersister entityPersister,

private static EntityPersister toMostSpecificCommonEntitySuperType(SessionImplementor session,
Iterable<? extends LoadingTypeContext<?>> targetEntityTypeContexts) {
- MetamodelImplementor metamodel = session.getSessionFactory().getMetamodel();
+ MappingMetamodel metamodel = session.getSessionFactory().getMappingMetamodel();
EntityPersister result = null;
for ( LoadingTypeContext<?> targetTypeContext : targetEntityTypeContexts ) {
EntityPersister type = targetTypeContext.entityPersister();
@@ -157,7 +155,7 @@ private static EntityPersister toMostSpecificCommonEntitySuperType(SessionImplem
result = type;
}
else {
- result = HibernateOrmUtils.toMostSpecificCommonEntitySuperType( metamodel, result, type );
+ result = HibernateOrmUtils.toMostSpecificCommonEntitySuperType( result, type );
}
}
return result;
diff --git a/main/java/org/hibernate/search/mapper/orm/loading/impl/HibernateOrmMassIdentifierLoader.java b/main/java/org/hibernate/search/mapper/orm/loading/impl/HibernateOrmMassIdentifierLoader.java
index 39df0c5a24..159eb3207c 100644
--- a/main/java/org/hibernate/search/mapper/orm/loading/impl/HibernateOrmMassIdentifierLoader.java
Expand Down