5151import org .hibernate .engine .jdbc .env .spi .JdbcEnvironment ;
5252import org .hibernate .internal .CoreMessageLogger ;
5353import org .hibernate .internal .util .StringHelper ;
54- import org .hibernate .internal .util .collections .ArrayHelper ;
5554import org .hibernate .jdbc .Expectation ;
5655import org .hibernate .mapping .BasicValue ;
5756import org .hibernate .mapping .CheckConstraint ;
106105import static org .hibernate .boot .model .internal .PropertyBinder .hasIdAnnotation ;
107106import static org .hibernate .boot .model .internal .PropertyBinder .processElementAnnotations ;
108107import static org .hibernate .boot .model .internal .PropertyHolderBuilder .buildPropertyHolder ;
108+ import static org .hibernate .boot .model .internal .QueryBinder .bindNativeQuery ;
109+ import static org .hibernate .boot .model .internal .QueryBinder .bindQuery ;
109110import static org .hibernate .boot .model .internal .TableBinder .bindForeignKey ;
110111import static org .hibernate .boot .model .naming .Identifier .toIdentifier ;
111112import static org .hibernate .engine .OptimisticLockStyle .fromLockType ;
@@ -342,8 +343,7 @@ private void addCheckToEntity(Check check) {
342343 }
343344
344345 private void callTypeBinders (PersistentClass persistentClass ) {
345- final var metaAnnotatedList = annotatedClass .getMetaAnnotated ( TypeBinderType .class , modelsContext () );
346- for ( var metaAnnotated : metaAnnotatedList ) {
346+ for ( var metaAnnotated : annotatedClass .getMetaAnnotated ( TypeBinderType .class , modelsContext () ) ) {
347347 applyTypeBinder ( metaAnnotated , persistentClass );
348348 }
349349 }
@@ -1157,13 +1157,14 @@ private static AnnotatedJoinColumns subclassJoinColumns(
11571157 //@Inheritance(JOINED) subclass need to link back to the super entity
11581158 final var joinColumns = new AnnotatedJoinColumns ();
11591159 joinColumns .setBuildingContext ( context );
1160-
11611160 final var modelsContext = context .getBootstrapContext ().getModelsContext ();
1162- final var primaryKeyJoinColumns =
1163- clazzToProcess .getAnnotationUsage ( PrimaryKeyJoinColumns .class , modelsContext );
1164- if ( primaryKeyJoinColumns != null
1165- && !ArrayHelper .isEmpty ( primaryKeyJoinColumns .value () ) ) {
1166- for ( var column : primaryKeyJoinColumns .value () ) {
1161+ if ( clazzToProcess .hasAnnotationUsage ( PrimaryKeyJoinColumn .class , modelsContext ) ) {
1162+ final var columns = clazzToProcess .getRepeatedAnnotationUsages ( PrimaryKeyJoinColumn .class , modelsContext );
1163+ if ( columns .length == 0 ) {
1164+ // PrimaryKeyJoinColumns must not be empty according to Javadoc
1165+ throw new AnnotationException ( "Empty '@PrimaryKeyJoinColumns' annotation" );
1166+ }
1167+ for ( var column : columns ) {
11671168 buildInheritanceJoinColumn (
11681169 column ,
11691170 null ,
@@ -1175,7 +1176,7 @@ private static AnnotatedJoinColumns subclassJoinColumns(
11751176 }
11761177 else {
11771178 buildInheritanceJoinColumn (
1178- clazzToProcess . getAnnotationUsage ( PrimaryKeyJoinColumn . class , modelsContext ) ,
1179+ null ,
11791180 null ,
11801181 superEntity .getIdentifier (),
11811182 joinColumns ,
@@ -1424,14 +1425,14 @@ private void bindCustomSql() {
14241425 if ( sqlSelect != null ) {
14251426 final String loaderName = persistentClass .getEntityName () + "$SQLSelect" ;
14261427 persistentClass .setLoaderName ( loaderName );
1427- QueryBinder . bindNativeQuery ( loaderName , sqlSelect , annotatedClass , context );
1428+ bindNativeQuery ( loaderName , sqlSelect , annotatedClass , context );
14281429 }
14291430
14301431 final var hqlSelect = annotatedClass .getAnnotationUsage ( HQLSelect .class , modelsContext () );
14311432 if ( hqlSelect != null ) {
14321433 final String loaderName = persistentClass .getEntityName () + "$HQLSelect" ;
14331434 persistentClass .setLoaderName ( loaderName );
1434- QueryBinder . bindQuery ( loaderName , hqlSelect , context );
1435+ bindQuery ( loaderName , hqlSelect , context );
14351436 }
14361437 }
14371438
0 commit comments