1414import org .hibernate .AnnotationException ;
1515import org .hibernate .CacheMode ;
1616import org .hibernate .FlushMode ;
17+ import org .hibernate .models .spi .AnnotationTarget ;
1718import org .hibernate .query .QueryFlushMode ;
1819import org .hibernate .LockOptions ;
1920import org .hibernate .annotations .FlushModeType ;
@@ -74,7 +75,8 @@ public abstract class QueryBinder {
7475 public static void bindQuery (
7576 NamedQuery namedQuery ,
7677 MetadataBuildingContext context ,
77- boolean isDefault ) {
78+ boolean isDefault ,
79+ AnnotationTarget annotationTarget ) {
7880 if ( namedQuery == null ) {
7981 return ;
8082 }
@@ -94,7 +96,7 @@ public static void bindQuery(
9496 final QueryHintDefinition hints = new QueryHintDefinition ( queryName , namedQuery .hints () );
9597 final NamedHqlQueryDefinition <?> queryMapping =
9698 createNamedQueryDefinition ( queryName , queryString , resultClass ,
97- hints .determineLockOptions ( namedQuery ), hints );
99+ hints .determineLockOptions ( namedQuery ), hints , annotationTarget );
98100 if ( isDefault ) {
99101 context .getMetadataCollector ().addDefaultQuery ( queryMapping );
100102 }
@@ -105,8 +107,8 @@ public static void bindQuery(
105107
106108 private static <T > NamedHqlQueryDefinitionImpl <T > createNamedQueryDefinition (
107109 String queryName , String queryString , Class <T > resultClass , LockOptions lockOptions ,
108- QueryHintDefinition hints ) {
109- return new NamedHqlQueryDefinitionImpl .Builder <T >(queryName )
110+ QueryHintDefinition hints , AnnotationTarget annotationTarget ) {
111+ return new NamedHqlQueryDefinitionImpl .Builder <T >(queryName , annotationTarget )
110112 .setHqlString (queryString )
111113 .setResultClass (resultClass )
112114 .setCacheable (hints .getCacheability ())
@@ -124,6 +126,7 @@ private static <T> NamedHqlQueryDefinitionImpl<T> createNamedQueryDefinition(
124126 public static void bindNativeQuery (
125127 NamedNativeQuery namedNativeQuery ,
126128 MetadataBuildingContext context ,
129+ AnnotationTarget location ,
127130 boolean isDefault ) {
128131 if ( namedNativeQuery == null ) {
129132 return ;
@@ -143,7 +146,7 @@ public static void bindNativeQuery(
143146 final Class <?> resultClass = void .class == resultClassDetails ? null : resultClassDetails ;
144147
145148 final NamedNativeQueryDefinition <?> queryDefinition =
146- createNamedQueryDefinition ( registrationName , queryString , resultClass , resultSetMappingName , hints );
149+ createNamedQueryDefinition ( registrationName , queryString , resultClass , resultSetMappingName , hints , location );
147150
148151 if ( LOG .isDebugEnabled () ) {
149152 LOG .debugf ( "Binding named native query: %s => %s" ,
@@ -161,8 +164,9 @@ public static void bindNativeQuery(
161164 private static <T > NamedNativeQueryDefinition <T > createNamedQueryDefinition (
162165 String registrationName , String queryString ,
163166 Class <T > resultClass , String resultSetMappingName ,
164- QueryHintDefinition hints ) {
165- return new NamedNativeQueryDefinition .Builder <T >(registrationName )
167+ QueryHintDefinition hints ,
168+ AnnotationTarget location ) {
169+ return new NamedNativeQueryDefinition .Builder <T >(registrationName , location )
166170 .setSqlString (queryString )
167171 .setResultClass (resultClass )
168172 .setResultSetMappingName (resultSetMappingName )
@@ -184,10 +188,11 @@ public static void bindNativeQuery(
184188 SQLSelect sqlSelect ,
185189 ClassDetails annotatedClass ,
186190 MetadataBuildingContext context ) {
187- final NamedNativeQueryDefinition .Builder <?> builder = new NamedNativeQueryDefinition .Builder <>( name )
188- .setFlushMode ( FlushMode .MANUAL )
189- .setSqlString ( sqlSelect .sql () )
190- .setQuerySpaces ( setOf ( sqlSelect .querySpaces () ) );
191+ final NamedNativeQueryDefinition .Builder <?> builder =
192+ new NamedNativeQueryDefinition .Builder <>( name )
193+ .setFlushMode ( FlushMode .MANUAL )
194+ .setSqlString ( sqlSelect .sql () )
195+ .setQuerySpaces ( setOf ( sqlSelect .querySpaces () ) );
191196
192197 if ( annotatedClass != null ) {
193198 builder .setResultClass (
@@ -210,7 +215,8 @@ public static void bindNativeQuery(
210215
211216 public static void bindNativeQuery (
212217 org .hibernate .annotations .NamedNativeQuery namedNativeQuery ,
213- MetadataBuildingContext context ) {
218+ MetadataBuildingContext context ,
219+ AnnotationTarget location ) {
214220 if ( namedNativeQuery == null ) {
215221 return ;
216222 }
@@ -231,7 +237,7 @@ public static void bindNativeQuery(
231237
232238 final NamedNativeQueryDefinition .Builder <?> builder =
233239 createQueryDefinition ( namedNativeQuery , registrationName , resultSetMappingName , resultClass ,
234- namedNativeQuery .timeout (), namedNativeQuery .fetchSize (), querySpaces );
240+ namedNativeQuery .timeout (), namedNativeQuery .fetchSize (), querySpaces , location );
235241
236242 if ( TRUE == namedNativeQuery .callable () ) {
237243 final NamedProcedureCallDefinition definition =
@@ -261,8 +267,9 @@ private static <T> NamedNativeQueryDefinition.Builder<T> createQueryDefinition(
261267 String registrationName , String resultSetMappingName ,
262268 Class <T > resultClass ,
263269 int timeout , int fetchSize ,
264- HashSet <String > querySpaces ) {
265- return new NamedNativeQueryDefinition .Builder <T >(registrationName )
270+ HashSet <String > querySpaces ,
271+ AnnotationTarget location ) {
272+ return new NamedNativeQueryDefinition .Builder <T >(registrationName , location )
266273 .setSqlString (namedNativeQuery .query ())
267274 .setResultSetMappingName (resultSetMappingName )
268275 .setResultClass (resultClass )
@@ -365,17 +372,18 @@ public static void bindQuery(
365372 String name ,
366373 HQLSelect hqlSelect ,
367374 MetadataBuildingContext context ) {
368- final NamedHqlQueryDefinition <?> hqlQueryDefinition = new NamedHqlQueryDefinition . Builder <>( name )
369- . setFlushMode ( FlushMode . MANUAL )
370- . setHqlString ( hqlSelect . query () )
371- . build ();
372-
375+ final NamedHqlQueryDefinition <?> hqlQueryDefinition =
376+ new NamedHqlQueryDefinition . Builder <>( name )
377+ . setFlushMode ( FlushMode . MANUAL )
378+ . setHqlString ( hqlSelect . query () )
379+ . build ();
373380 context .getMetadataCollector ().addNamedQuery ( hqlQueryDefinition );
374381 }
375382
376383 public static void bindQuery (
377384 org .hibernate .annotations .NamedQuery namedQuery ,
378- MetadataBuildingContext context ) {
385+ MetadataBuildingContext context ,
386+ AnnotationTarget location ) {
379387 if ( namedQuery == null ) {
380388 return ;
381389 }
@@ -389,7 +397,7 @@ public static void bindQuery(
389397
390398 final NamedHqlQueryDefinition .Builder <?> builder =
391399 createQueryDefinition ( namedQuery , registrationName , resultClass ,
392- namedQuery .timeout (), namedQuery .fetchSize () ) ;
400+ namedQuery .timeout (), namedQuery .fetchSize (), location ) ;
393401
394402 final NamedHqlQueryDefinitionImpl <?> hqlQueryDefinition = builder .build ();
395403
@@ -403,8 +411,9 @@ public static void bindQuery(
403411
404412 private static <T > NamedHqlQueryDefinition .Builder <T > createQueryDefinition (
405413 org .hibernate .annotations .NamedQuery namedQuery ,
406- String registrationName , Class <T > resultClass , int timeout , int fetchSize ) {
407- return new NamedHqlQueryDefinition .Builder <T >(registrationName )
414+ String registrationName , Class <T > resultClass , int timeout , int fetchSize ,
415+ AnnotationTarget location ) {
416+ return new NamedHqlQueryDefinition .Builder <T >(registrationName , location )
408417 .setHqlString (namedQuery .query ())
409418 .setResultClass (resultClass )
410419 .setCacheable (namedQuery .cacheable ())
0 commit comments