Skip to content

Commit 5963b6a

Browse files
committed
HHH-2188 Query metadata gives NPE for polymorphic queries
1 parent 9a9a95e commit 5963b6a

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

hibernate-core/src/main/java/org/hibernate/internal/SessionFactoryImpl.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import java.util.Properties;
4141
import java.util.Set;
4242
import java.util.concurrent.ConcurrentHashMap;
43+
4344
import javax.naming.Reference;
4445
import javax.naming.StringRefAddr;
4546

@@ -104,6 +105,7 @@
104105
import org.hibernate.engine.profile.Fetch;
105106
import org.hibernate.engine.profile.FetchProfile;
106107
import org.hibernate.engine.query.spi.QueryPlanCache;
108+
import org.hibernate.engine.query.spi.ReturnMetadata;
107109
import org.hibernate.engine.spi.CacheImplementor;
108110
import org.hibernate.engine.spi.FilterDefinition;
109111
import org.hibernate.engine.spi.Mapping;
@@ -151,7 +153,6 @@
151153
import org.hibernate.type.AssociationType;
152154
import org.hibernate.type.Type;
153155
import org.hibernate.type.TypeResolver;
154-
155156
import org.jboss.logging.Logger;
156157

157158

@@ -1195,15 +1196,15 @@ public String getIdentifierPropertyName(String className) throws MappingExceptio
11951196
}
11961197

11971198
public Type[] getReturnTypes(String queryString) throws HibernateException {
1198-
return queryPlanCache.getHQLQueryPlan( queryString, false, Collections.EMPTY_MAP )
1199-
.getReturnMetadata()
1200-
.getReturnTypes();
1199+
final ReturnMetadata metadata = queryPlanCache.getHQLQueryPlan( queryString, false, Collections.EMPTY_MAP )
1200+
.getReturnMetadata();
1201+
return metadata == null ? null : metadata.getReturnTypes();
12011202
}
12021203

12031204
public String[] getReturnAliases(String queryString) throws HibernateException {
1204-
return queryPlanCache.getHQLQueryPlan( queryString, false, Collections.EMPTY_MAP )
1205-
.getReturnMetadata()
1206-
.getReturnAliases();
1205+
final ReturnMetadata metadata = queryPlanCache.getHQLQueryPlan( queryString, false, Collections.EMPTY_MAP )
1206+
.getReturnMetadata();
1207+
return metadata == null ? null : metadata.getReturnAliases();
12071208
}
12081209

12091210
public ClassMetadata getClassMetadata(Class persistentClass) throws HibernateException {

0 commit comments

Comments
 (0)