27
27
import javax .naming .Reference ;
28
28
import javax .naming .StringRefAddr ;
29
29
30
+ import org .hibernate .AssertionFailure ;
30
31
import org .hibernate .CustomEntityDirtinessStrategy ;
31
32
import org .hibernate .EntityNameResolver ;
32
33
import org .hibernate .FlushMode ;
93
94
import org .hibernate .query .hql .spi .SqmQueryImplementor ;
94
95
import org .hibernate .query .internal .QueryEngineImpl ;
95
96
import org .hibernate .query .named .NamedObjectRepository ;
96
- import org .hibernate .query .named .NamedQueryMemento ;
97
97
import org .hibernate .query .spi .QueryEngine ;
98
98
import org .hibernate .query .spi .QueryImplementor ;
99
99
import org .hibernate .query .sql .spi .NativeQueryImplementor ;
100
100
import org .hibernate .query .sqm .NodeBuilder ;
101
101
import org .hibernate .query .sqm .function .SqmFunctionRegistry ;
102
- import org .hibernate .query .sqm .spi .NamedSqmQueryMemento ;
103
102
import org .hibernate .relational .SchemaManager ;
104
103
import org .hibernate .relational .internal .SchemaManagerImpl ;
105
104
import org .hibernate .resource .jdbc .spi .PhysicalConnectionHandlingMode ;
@@ -923,8 +922,8 @@ public PersistenceUnitTransactionType getTransactionType() {
923
922
public void addNamedQuery (String name , Query query ) {
924
923
validateNotClosed ();
925
924
926
- // NOTE : we use Query#unwrap here (rather than direct type checking) to account for possibly wrapped
927
- // query implementations
925
+ // NOTE : we use Query#unwrap here (rather than direct type checking)
926
+ // to account for possibly wrapped query implementations
928
927
929
928
// first, handle StoredProcedureQuery
930
929
final NamedObjectRepository namedObjectRepository = getQueryEngine ().getNamedObjectRepository ();
@@ -941,24 +940,25 @@ public void addNamedQuery(String name, Query query) {
941
940
942
941
// then try as a native-SQL or JPQL query
943
942
try {
944
- final QueryImplementor <?> hibernateQuery = query .unwrap ( QueryImplementor .class );
945
- if ( hibernateQuery != null ) {
943
+ final QueryImplementor <?> queryImplementor = query .unwrap ( QueryImplementor .class );
944
+ if ( queryImplementor != null ) {
946
945
// create and register the proper NamedQueryDefinition...
947
- if ( hibernateQuery instanceof NativeQueryImplementor ) {
946
+ if ( queryImplementor instanceof NativeQueryImplementor <?> nativeQueryImplementor ) {
948
947
namedObjectRepository .registerNativeQueryMemento (
949
948
name ,
950
- ( ( NativeQueryImplementor <?>) hibernateQuery ) .toMemento ( name )
949
+ nativeQueryImplementor .toMemento ( name )
951
950
);
952
951
953
952
}
954
- else {
955
- final NamedQueryMemento namedQueryMemento =
956
- ( (SqmQueryImplementor <?>) hibernateQuery ).toMemento ( name );
953
+ else if ( queryImplementor instanceof SqmQueryImplementor <?> sqmQueryImplementor ) {
957
954
namedObjectRepository .registerSqmQueryMemento (
958
955
name ,
959
- ( NamedSqmQueryMemento ) namedQueryMemento
956
+ sqmQueryImplementor . toMemento ( name )
960
957
);
961
958
}
959
+ else {
960
+ throw new AssertionFailure ("unknown QueryImplementor" );
961
+ }
962
962
return ;
963
963
}
964
964
}
0 commit comments