@@ -2107,82 +2107,76 @@ private DependantValue buildCollectionKey(AnnotatedJoinColumns joinColumns, OnDe
2107
2107
collection .setKey ( key );
2108
2108
2109
2109
if ( property != null ) {
2110
- final org .hibernate .annotations .ForeignKey fk = property .getDirectAnnotationUsage ( org .hibernate .annotations .ForeignKey .class );
2111
- if ( fk != null && !fk .name ().isEmpty () ) {
2112
- key .setForeignKeyName ( fk .name () );
2110
+ final CollectionTable collectionTableAnn = property .getDirectAnnotationUsage ( CollectionTable .class );
2111
+ if ( collectionTableAnn != null ) {
2112
+ final ForeignKey foreignKey = collectionTableAnn .foreignKey ();
2113
+ final ConstraintMode constraintMode = foreignKey .value ();
2114
+ if ( constraintMode == NO_CONSTRAINT
2115
+ || constraintMode == PROVIDER_DEFAULT && noConstraintByDefault ) {
2116
+ key .disableForeignKey ();
2117
+ }
2118
+ else {
2119
+ key .setForeignKeyName ( nullIfEmpty ( foreignKey .name () ) );
2120
+ key .setForeignKeyDefinition ( nullIfEmpty ( foreignKey .foreignKeyDefinition () ) );
2121
+ if ( key .getForeignKeyName () == null
2122
+ && key .getForeignKeyDefinition () == null
2123
+ && collectionTableAnn .joinColumns ().length == 1 ) {
2124
+ //noinspection unchecked
2125
+ final JoinColumn joinColumn = collectionTableAnn .joinColumns ()[0 ];
2126
+ final ForeignKey nestedForeignKey = joinColumn .foreignKey ();
2127
+ key .setForeignKeyName ( nullIfEmpty ( nestedForeignKey .name () ) );
2128
+ key .setForeignKeyDefinition ( nullIfEmpty ( nestedForeignKey .foreignKeyDefinition () ) );
2129
+ }
2130
+ }
2113
2131
}
2114
2132
else {
2115
- final CollectionTable collectionTableAnn = property .getDirectAnnotationUsage ( CollectionTable .class );
2116
- if ( collectionTableAnn != null ) {
2117
- final ForeignKey foreignKey = collectionTableAnn .foreignKey ();
2118
- final ConstraintMode constraintMode = foreignKey .value ();
2119
- if ( constraintMode == NO_CONSTRAINT
2120
- || constraintMode == PROVIDER_DEFAULT && noConstraintByDefault ) {
2133
+ final JoinTable joinTableAnn = property .getDirectAnnotationUsage ( JoinTable .class );
2134
+ if ( joinTableAnn != null ) {
2135
+ final ForeignKey foreignKey = joinTableAnn .foreignKey ();
2136
+ String foreignKeyName = foreignKey .name ();
2137
+ String foreignKeyDefinition = foreignKey .foreignKeyDefinition ();
2138
+ ConstraintMode foreignKeyValue = foreignKey .value ();
2139
+ final JoinColumn [] joinColumnAnnotations = joinTableAnn .joinColumns ();
2140
+ if ( !ArrayHelper .isEmpty ( joinColumnAnnotations ) ) {
2141
+ final JoinColumn joinColumnAnn = joinColumnAnnotations [0 ];
2142
+ final ForeignKey joinColumnForeignKey = joinColumnAnn .foreignKey ();
2143
+ if ( foreignKeyName .isEmpty () ) {
2144
+ foreignKeyName = joinColumnForeignKey .name ();
2145
+ foreignKeyDefinition = joinColumnForeignKey .foreignKeyDefinition ();
2146
+ }
2147
+ if ( foreignKeyValue != NO_CONSTRAINT ) {
2148
+ foreignKeyValue = joinColumnForeignKey .value ();
2149
+ }
2150
+ }
2151
+ if ( foreignKeyValue == NO_CONSTRAINT
2152
+ || foreignKeyValue == PROVIDER_DEFAULT && noConstraintByDefault ) {
2121
2153
key .disableForeignKey ();
2122
2154
}
2123
2155
else {
2124
- key .setForeignKeyName ( nullIfEmpty ( foreignKey .name () ) );
2125
- key .setForeignKeyDefinition ( nullIfEmpty ( foreignKey .foreignKeyDefinition () ) );
2126
- if ( key .getForeignKeyName () == null
2127
- && key .getForeignKeyDefinition () == null
2128
- && collectionTableAnn .joinColumns ().length == 1 ) {
2129
- //noinspection unchecked
2130
- final JoinColumn joinColumn = collectionTableAnn .joinColumns ()[0 ];
2131
- final ForeignKey nestedForeignKey = joinColumn .foreignKey ();
2132
- key .setForeignKeyName ( nullIfEmpty ( nestedForeignKey .name () ) );
2133
- key .setForeignKeyDefinition ( nullIfEmpty ( nestedForeignKey .foreignKeyDefinition () ) );
2134
- }
2156
+ key .setForeignKeyName ( nullIfEmpty ( foreignKeyName ) );
2157
+ key .setForeignKeyDefinition ( nullIfEmpty ( foreignKeyDefinition ) );
2135
2158
}
2136
2159
}
2137
2160
else {
2138
- final JoinTable joinTableAnn = property .getDirectAnnotationUsage ( JoinTable .class );
2139
- if ( joinTableAnn != null ) {
2140
- final ForeignKey foreignKey = joinTableAnn .foreignKey ();
2141
- String foreignKeyName = foreignKey .name ();
2142
- String foreignKeyDefinition = foreignKey .foreignKeyDefinition ();
2143
- ConstraintMode foreignKeyValue = foreignKey .value ();
2144
- final JoinColumn [] joinColumnAnnotations = joinTableAnn .joinColumns ();
2145
- if ( !ArrayHelper .isEmpty ( joinColumnAnnotations ) ) {
2146
- final JoinColumn joinColumnAnn = joinColumnAnnotations [0 ];
2147
- final ForeignKey joinColumnForeignKey = joinColumnAnn .foreignKey ();
2148
- if ( foreignKeyName .isEmpty () ) {
2149
- foreignKeyName = joinColumnForeignKey .name ();
2150
- foreignKeyDefinition = joinColumnForeignKey .foreignKeyDefinition ();
2151
- }
2152
- if ( foreignKeyValue != NO_CONSTRAINT ) {
2153
- foreignKeyValue = joinColumnForeignKey .value ();
2154
- }
2155
- }
2156
- if ( foreignKeyValue == NO_CONSTRAINT
2157
- || foreignKeyValue == PROVIDER_DEFAULT && noConstraintByDefault ) {
2158
- key .disableForeignKey ();
2159
- }
2160
- else {
2161
- key .setForeignKeyName ( nullIfEmpty ( foreignKeyName ) );
2162
- key .setForeignKeyDefinition ( nullIfEmpty ( foreignKeyDefinition ) );
2163
- }
2161
+ final String propertyPath = qualify ( propertyHolder .getPath (), property .getName () );
2162
+ final ForeignKey foreignKey = propertyHolder .getOverriddenForeignKey ( propertyPath );
2163
+ if ( foreignKey != null ) {
2164
+ handleForeignKeyConstraint ( noConstraintByDefault , key , foreignKey );
2164
2165
}
2165
2166
else {
2166
- final String propertyPath = qualify ( propertyHolder .getPath (), property .getName () );
2167
- final ForeignKey foreignKey = propertyHolder .getOverriddenForeignKey ( propertyPath );
2168
- if ( foreignKey != null ) {
2169
- handleForeignKeyConstraint ( noConstraintByDefault , key , foreignKey );
2167
+ final OneToMany oneToManyAnn = property .getDirectAnnotationUsage ( OneToMany .class );
2168
+ final OnDelete onDeleteAnn = property .getDirectAnnotationUsage ( OnDelete .class );
2169
+ if ( oneToManyAnn != null
2170
+ && !oneToManyAnn .mappedBy ().isEmpty ()
2171
+ && ( onDeleteAnn == null || onDeleteAnn .action () != OnDeleteAction .CASCADE ) ) {
2172
+ // foreign key should be up to @ManyToOne side
2173
+ // @OnDelete generate "on delete cascade" foreign key
2174
+ key .disableForeignKey ();
2170
2175
}
2171
2176
else {
2172
- final OneToMany oneToManyAnn = property .getDirectAnnotationUsage ( OneToMany .class );
2173
- final OnDelete onDeleteAnn = property .getDirectAnnotationUsage ( OnDelete .class );
2174
- if ( oneToManyAnn != null
2175
- && !oneToManyAnn .mappedBy ().isEmpty ()
2176
- && ( onDeleteAnn == null || onDeleteAnn .action () != OnDeleteAction .CASCADE ) ) {
2177
- // foreign key should be up to @ManyToOne side
2178
- // @OnDelete generate "on delete cascade" foreign key
2179
- key .disableForeignKey ();
2180
- }
2181
- else {
2182
- final JoinColumn joinColumnAnn = property .getDirectAnnotationUsage ( JoinColumn .class );
2183
- if ( joinColumnAnn != null ) {
2184
- handleForeignKeyConstraint ( noConstraintByDefault , key , joinColumnAnn .foreignKey () );
2185
- }
2177
+ final JoinColumn joinColumnAnn = property .getDirectAnnotationUsage ( JoinColumn .class );
2178
+ if ( joinColumnAnn != null ) {
2179
+ handleForeignKeyConstraint ( noConstraintByDefault , key , joinColumnAnn .foreignKey () );
2186
2180
}
2187
2181
}
2188
2182
}
@@ -2466,38 +2460,32 @@ private ManyToOne handleCollectionOfEntities(
2466
2460
collection .setManyToManyOrdering ( buildOrderByClauseFromHql ( hqlOrderBy , collectionEntity ) );
2467
2461
}
2468
2462
2469
- final org .hibernate .annotations .ForeignKey fk = property .getDirectAnnotationUsage ( org .hibernate .annotations .ForeignKey .class );
2470
- if ( fk != null && !fk .name ().isEmpty () ) {
2471
- element .setForeignKeyName ( fk .name () );
2472
- }
2473
- else {
2474
- final JoinTable joinTableAnn = property .getDirectAnnotationUsage ( JoinTable .class );
2475
- if ( joinTableAnn != null ) {
2476
- final ForeignKey inverseForeignKey = joinTableAnn .inverseForeignKey ();
2477
- String foreignKeyName = inverseForeignKey .name ();
2478
- String foreignKeyDefinition = inverseForeignKey .foreignKeyDefinition ();
2479
-
2480
- final JoinColumn [] inverseJoinColumns = joinTableAnn .inverseJoinColumns ();
2481
- if ( !ArrayHelper .isEmpty ( inverseJoinColumns ) ) {
2482
- final JoinColumn joinColumnAnn = inverseJoinColumns [0 ];
2483
- if ( foreignKeyName .isEmpty () ) {
2484
- final ForeignKey inverseJoinColumnForeignKey = joinColumnAnn .foreignKey ();
2485
- foreignKeyName = inverseJoinColumnForeignKey .name ();
2486
- foreignKeyDefinition = inverseJoinColumnForeignKey .foreignKeyDefinition ();
2487
- }
2488
- }
2463
+ final JoinTable joinTableAnn = property .getDirectAnnotationUsage ( JoinTable .class );
2464
+ if ( joinTableAnn != null ) {
2465
+ final ForeignKey inverseForeignKey = joinTableAnn .inverseForeignKey ();
2466
+ String foreignKeyName = inverseForeignKey .name ();
2467
+ String foreignKeyDefinition = inverseForeignKey .foreignKeyDefinition ();
2489
2468
2490
- final ConstraintMode constraintMode = inverseForeignKey .value ();
2491
- if ( constraintMode == NO_CONSTRAINT
2492
- || constraintMode == PROVIDER_DEFAULT
2493
- && buildingContext .getBuildingOptions ().isNoConstraintByDefault () ) {
2494
- element .disableForeignKey ();
2495
- }
2496
- else {
2497
- element .setForeignKeyName ( nullIfEmpty ( foreignKeyName ) );
2498
- element .setForeignKeyDefinition ( nullIfEmpty ( foreignKeyDefinition ) );
2469
+ final JoinColumn [] inverseJoinColumns = joinTableAnn .inverseJoinColumns ();
2470
+ if ( !ArrayHelper .isEmpty ( inverseJoinColumns ) ) {
2471
+ final JoinColumn joinColumnAnn = inverseJoinColumns [0 ];
2472
+ if ( foreignKeyName .isEmpty () ) {
2473
+ final ForeignKey inverseJoinColumnForeignKey = joinColumnAnn .foreignKey ();
2474
+ foreignKeyName = inverseJoinColumnForeignKey .name ();
2475
+ foreignKeyDefinition = inverseJoinColumnForeignKey .foreignKeyDefinition ();
2499
2476
}
2500
2477
}
2478
+
2479
+ final ConstraintMode constraintMode = inverseForeignKey .value ();
2480
+ if ( constraintMode == NO_CONSTRAINT
2481
+ || constraintMode == PROVIDER_DEFAULT
2482
+ && buildingContext .getBuildingOptions ().isNoConstraintByDefault () ) {
2483
+ element .disableForeignKey ();
2484
+ }
2485
+ else {
2486
+ element .setForeignKeyName ( nullIfEmpty ( foreignKeyName ) );
2487
+ element .setForeignKeyDefinition ( nullIfEmpty ( foreignKeyDefinition ) );
2488
+ }
2501
2489
}
2502
2490
return element ;
2503
2491
}
0 commit comments