File tree Expand file tree Collapse file tree 3 files changed +30
-1
lines changed
hibernate-core/src/main/java/org/hibernate/mapping Expand file tree Collapse file tree 3 files changed +30
-1
lines changed Original file line number Diff line number Diff line change @@ -548,9 +548,16 @@ && isSame( element, other.element )
548
548
549
549
private void createForeignKeys () throws MappingException {
550
550
// if ( !isInverse() ) { // for inverse collections, let the "other end" handle it
551
+ final String entityName = getOwner ().getEntityName ();
551
552
if ( referencedPropertyName == null ) {
552
553
getElement ().createForeignKey ();
553
- key .createForeignKeyOfEntity ( getOwner ().getEntityName () );
554
+ key .createForeignKeyOfEntity ( entityName );
555
+ }
556
+ else {
557
+ final Property property = owner .getProperty ( referencedPropertyName );
558
+ assert property != null ;
559
+ key .createForeignKeyOfEntity ( entityName ,
560
+ property .getValue ().getConstraintColumns () );
554
561
}
555
562
// }
556
563
}
Original file line number Diff line number Diff line change 8
8
import org .hibernate .dialect .Dialect ;
9
9
import org .hibernate .generator .Generator ;
10
10
11
+ import java .util .List ;
12
+
11
13
/**
12
14
* A mapping model {@link Value} which may be treated as an identifying key of a
13
15
* relational database table. A {@code KeyValue} might represent the primary key
18
20
*/
19
21
public interface KeyValue extends Value {
20
22
23
+ ForeignKey createForeignKeyOfEntity (String entityName , List <Column > referencedColumns );
24
+
21
25
ForeignKey createForeignKeyOfEntity (String entityName );
22
26
23
27
boolean isCascadeDeleteEnabled ();
Original file line number Diff line number Diff line change @@ -351,6 +351,24 @@ public ForeignKey createForeignKeyOfEntity(String entityName) {
351
351
return null ;
352
352
}
353
353
354
+ @ Override
355
+ public ForeignKey createForeignKeyOfEntity (String entityName , List <Column > referencedColumns ) {
356
+ if ( isConstrained () ) {
357
+ final ForeignKey foreignKey = table .createForeignKey (
358
+ getForeignKeyName (),
359
+ getConstraintColumns (),
360
+ entityName ,
361
+ getForeignKeyDefinition (),
362
+ getForeignKeyOptions (),
363
+ referencedColumns
364
+ );
365
+ foreignKey .setOnDeleteAction ( onDeleteAction );
366
+ return foreignKey ;
367
+ }
368
+
369
+ return null ;
370
+ }
371
+
354
372
@ Override
355
373
public void createUniqueKey (MetadataBuildingContext context ) {
356
374
if ( hasFormula () ) {
You can’t perform that action at this time.
0 commit comments