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 )
548548
549549 private void createForeignKeys () throws MappingException {
550550 // if ( !isInverse() ) { // for inverse collections, let the "other end" handle it
551+ final String entityName = getOwner ().getEntityName ();
551552 if ( referencedPropertyName == null ) {
552553 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 () );
554561 }
555562 // }
556563 }
Original file line number Diff line number Diff line change 88import org .hibernate .dialect .Dialect ;
99import org .hibernate .generator .Generator ;
1010
11+ import java .util .List ;
12+
1113/**
1214 * A mapping model {@link Value} which may be treated as an identifying key of a
1315 * relational database table. A {@code KeyValue} might represent the primary key
1820 */
1921public interface KeyValue extends Value {
2022
23+ ForeignKey createForeignKeyOfEntity (String entityName , List <Column > referencedColumns );
24+
2125 ForeignKey createForeignKeyOfEntity (String entityName );
2226
2327 boolean isCascadeDeleteEnabled ();
Original file line number Diff line number Diff line change @@ -351,6 +351,24 @@ public ForeignKey createForeignKeyOfEntity(String entityName) {
351351 return null ;
352352 }
353353
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+
354372 @ Override
355373 public void createUniqueKey (MetadataBuildingContext context ) {
356374 if ( hasFormula () ) {
You can’t perform that action at this time.
0 commit comments