2727import javax .naming .Reference ;
2828import javax .naming .StringRefAddr ;
2929
30+ import org .hibernate .AssertionFailure ;
3031import org .hibernate .CustomEntityDirtinessStrategy ;
3132import org .hibernate .EntityNameResolver ;
3233import org .hibernate .FlushMode ;
9394import org .hibernate .query .hql .spi .SqmQueryImplementor ;
9495import org .hibernate .query .internal .QueryEngineImpl ;
9596import org .hibernate .query .named .NamedObjectRepository ;
96- import org .hibernate .query .named .NamedQueryMemento ;
9797import org .hibernate .query .spi .QueryEngine ;
9898import org .hibernate .query .spi .QueryImplementor ;
9999import org .hibernate .query .sql .spi .NativeQueryImplementor ;
100100import org .hibernate .query .sqm .NodeBuilder ;
101101import org .hibernate .query .sqm .function .SqmFunctionRegistry ;
102- import org .hibernate .query .sqm .spi .NamedSqmQueryMemento ;
103102import org .hibernate .relational .SchemaManager ;
104103import org .hibernate .relational .internal .SchemaManagerImpl ;
105104import org .hibernate .resource .jdbc .spi .PhysicalConnectionHandlingMode ;
@@ -923,8 +922,8 @@ public PersistenceUnitTransactionType getTransactionType() {
923922 public void addNamedQuery (String name , Query query ) {
924923 validateNotClosed ();
925924
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
928927
929928 // first, handle StoredProcedureQuery
930929 final NamedObjectRepository namedObjectRepository = getQueryEngine ().getNamedObjectRepository ();
@@ -941,24 +940,25 @@ public void addNamedQuery(String name, Query query) {
941940
942941 // then try as a native-SQL or JPQL query
943942 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 ) {
946945 // create and register the proper NamedQueryDefinition...
947- if ( hibernateQuery instanceof NativeQueryImplementor ) {
946+ if ( queryImplementor instanceof NativeQueryImplementor <?> nativeQueryImplementor ) {
948947 namedObjectRepository .registerNativeQueryMemento (
949948 name ,
950- ( ( NativeQueryImplementor <?>) hibernateQuery ) .toMemento ( name )
949+ nativeQueryImplementor .toMemento ( name )
951950 );
952951
953952 }
954- else {
955- final NamedQueryMemento namedQueryMemento =
956- ( (SqmQueryImplementor <?>) hibernateQuery ).toMemento ( name );
953+ else if ( queryImplementor instanceof SqmQueryImplementor <?> sqmQueryImplementor ) {
957954 namedObjectRepository .registerSqmQueryMemento (
958955 name ,
959- ( NamedSqmQueryMemento ) namedQueryMemento
956+ sqmQueryImplementor . toMemento ( name )
960957 );
961958 }
959+ else {
960+ throw new AssertionFailure ("unknown QueryImplementor" );
961+ }
962962 return ;
963963 }
964964 }
0 commit comments