@@ -1292,23 +1292,48 @@ private void bindExplicitTypes() {
1292
1292
}
1293
1293
1294
1294
private void detectMappedByProblem (boolean isMappedBy ) {
1295
- if ( isMappedBy
1296
- && ( property .hasDirectAnnotationUsage ( JoinColumn .class )
1297
- || property .hasDirectAnnotationUsage ( JoinColumns .class ) ) ) {
1298
- throw new AnnotationException ( "Association '"
1299
- + qualify ( propertyHolder .getPath (), propertyName )
1300
- + "' is 'mappedBy' another entity and may not specify the '@JoinColumn'" );
1301
- }
1302
-
1303
- if ( isMappedBy
1304
- && propertyHolder .getJoinTable ( property ) != null ) {
1305
- throw new AnnotationException ( "Association '"
1306
- + qualify ( propertyHolder .getPath (), propertyName )
1307
- + "' is 'mappedBy' another entity and may not specify the '@JoinTable'" );
1295
+ if ( isMappedBy ) {
1296
+ if ( property .hasDirectAnnotationUsage ( JoinColumn .class )
1297
+ || property .hasDirectAnnotationUsage ( JoinColumns .class ) ) {
1298
+ throw new AnnotationException ( "Association '"
1299
+ + qualify ( propertyHolder .getPath (), propertyName )
1300
+ + "' is 'mappedBy' another entity and may not specify the '@JoinColumn'" );
1301
+ }
1302
+ if ( propertyHolder .getJoinTable ( property ) != null ) {
1303
+ throw new AnnotationException ( "Association '"
1304
+ + qualify ( propertyHolder .getPath (), propertyName )
1305
+ + "' is 'mappedBy' another entity and may not specify the '@JoinTable'" );
1306
+ }
1307
+ if ( oneToMany ) {
1308
+ if ( property .hasDirectAnnotationUsage ( MapKeyColumn .class ) ) {
1309
+ LOG .warn ( "Association '"
1310
+ + qualify ( propertyHolder .getPath (), propertyName )
1311
+ + "' is 'mappedBy' another entity and should not specify a '@MapKeyColumn'"
1312
+ + " (use '@MapKey' instead)" );
1313
+ }
1314
+ if ( property .hasDirectAnnotationUsage ( OrderColumn .class ) ) {
1315
+ LOG .warn ( "Association '"
1316
+ + qualify ( propertyHolder .getPath (), propertyName )
1317
+ + "' is 'mappedBy' another entity and should not specify an '@OrderColumn'"
1318
+ + " (use '@OrderBy' instead)" );
1319
+ }
1320
+ }
1321
+ else {
1322
+ if ( property .hasDirectAnnotationUsage ( MapKeyColumn .class ) ) {
1323
+ throw new AnnotationException ( "Association '"
1324
+ + qualify ( propertyHolder .getPath (), propertyName )
1325
+ + "' is 'mappedBy' another entity and may not specify a '@MapKeyColumn'"
1326
+ + " (use '@MapKey' instead)" );
1327
+ }
1328
+ if ( property .hasDirectAnnotationUsage ( OrderColumn .class ) ) {
1329
+ throw new AnnotationException ( "Association '"
1330
+ + qualify ( propertyHolder .getPath (), propertyName )
1331
+ + "' is 'mappedBy' another entity and may not specify an '@OrderColumn'"
1332
+ + " (use '@OrderBy' instead)" );
1333
+ }
1334
+ }
1308
1335
}
1309
-
1310
- if ( !isMappedBy
1311
- && oneToMany
1336
+ else if ( oneToMany
1312
1337
&& property .hasDirectAnnotationUsage ( OnDelete .class )
1313
1338
&& !property .hasDirectAnnotationUsage ( JoinColumn .class )
1314
1339
&& !property .hasDirectAnnotationUsage ( JoinColumns .class )) {
0 commit comments