Skip to content

Commit eb896ef

Browse files
committed
HHH-18649 fix NPE
1 parent 5228789 commit eb896ef

File tree

3 files changed

+20
-17
lines changed

3 files changed

+20
-17
lines changed

hibernate-core/src/main/java/org/hibernate/metamodel/internal/MetadataContext.java

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -691,12 +691,9 @@ private Property getMappedSuperclassProperty(String propertyName, MappedSupercla
691691

692692
private <X> void populateStaticMetamodel(ManagedDomainType<X> managedType, Set<String> processedMetamodelClassName) {
693693
final Class<X> managedTypeClass = managedType.getJavaType();
694-
if ( managedTypeClass == null ) {
695-
// should indicate MAP entity mode, skip...
696-
return;
697-
}
698-
if ( processedMetamodelClassName.add( metamodelClassName( managedTypeClass ) ) ) {
699-
final Class<?> metamodelClass = metamodelClass( managedTypeClass );
694+
if ( managedTypeClass != null // can be null for MAP entity mode, so skip...
695+
&& processedMetamodelClassName.add( metamodelClassName( managedType ) ) ) {
696+
final Class<?> metamodelClass = metamodelClass( managedType );
700697
if ( metamodelClass != null ) {
701698
populateMetamodelClass( managedType, metamodelClass );
702699
}
@@ -724,18 +721,23 @@ private static <X> void injectManagedType(ManagedDomainType<X> managedType, Clas
724721
}
725722
}
726723

727-
private static String metamodelClassName(Class<?> managedTypeClass) {
728-
return managedTypeClass.getName() + '_';
724+
private static String metamodelClassName(ManagedDomainType<?> managedTypeClass) {
725+
return managedTypeClass.getJavaType().getName() + '_';
729726
}
730727

731-
public Class<?> metamodelClass(Class<?> managedTypeClass) {
732-
final String metamodelClassName = metamodelClassName( managedTypeClass );
733-
try {
734-
return classLoaderService.classForName( metamodelClassName );
735-
}
736-
catch ( ClassLoadingException ignore ) {
728+
public Class<?> metamodelClass(ManagedDomainType<?> managedDomainType) {
729+
if ( managedDomainType == null ) {
737730
return null;
738731
}
732+
else {
733+
final String metamodelClassName = metamodelClassName( managedDomainType );
734+
try {
735+
return classLoaderService.classForName( metamodelClassName );
736+
}
737+
catch ( ClassLoadingException ignore ) {
738+
return null;
739+
}
740+
}
739741
}
740742

741743
private <X> void registerAttributes(Class<?> metamodelClass, ManagedDomainType<X> managedType) {

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/JpaMetamodelImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -680,11 +680,11 @@ private void populateStaticMetamodel(MetadataImplementor bootMetamodel, Metadata
680680

681681
private Class<?> namedQueryMetamodelClass(NamedQueryDefinition<?> definition, MetadataContext context) {
682682
final AnnotationTarget location = definition.getLocation();
683-
return location == null ? null : context.metamodelClass( managedTypeByName.get( location.getName() ).getJavaType() );
683+
return location == null ? null : context.metamodelClass( managedTypeByName.get( location.getName() ) );
684684
}
685685

686686
private Class<?> graphMetamodelClass(NamedEntityGraphDefinition definition, MetadataContext context) {
687-
return context.metamodelClass( managedTypeByName.get( definition.getEntityName() ).getJavaType() );
687+
return context.metamodelClass( managedTypeByName.get( definition.getEntityName() ) );
688688
}
689689

690690
public static void addAllowedEnumLiteralsToEnumTypesMap(

hibernate-core/src/test/java/org/hibernate/orm/test/jpa/pack/defaultpar/package-info.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
66
*/
77
@NamedQuery(name = "allMouse",
8-
query = "select m from ApplicationServer m") package org.hibernate.orm.test.jpa.pack.defaultpar;
8+
query = "select m from ApplicationServer m")
9+
package org.hibernate.orm.test.jpa.pack.defaultpar;
910
import org.hibernate.annotations.NamedQuery;

0 commit comments

Comments
 (0)