@@ -58,7 +58,7 @@ public static void addBiDirectionalMappings(final Table table, final ForeignKeyC
5858 //Adding JoinColumn and MapsId annotations in below logic
5959 //Case: Composite Foreign key
6060 if (foreignKeyConstraint .getColumns ().size () > 1 ) {
61- handleCompositeForeignKey (table , foreignKeyConstraint , parentTableField , embeddableId , allPrimaryKeyColumns );
61+ handleCompositeForeignKey (table , parentTable , foreignKeyConstraint , parentTableField , embeddableId , allPrimaryKeyColumns );
6262
6363 }
6464 //Case: Single Foreign Key
@@ -108,15 +108,15 @@ private static void handleSingleForeignKey(final Table table, final ForeignKeyCo
108108 .build ().toString ());
109109 }
110110
111- private static void handleCompositeForeignKey (final Table table , final ForeignKeyConstraint foreignKeyConstraint , final Column parentTableField ,
112- final EmbeddableClass embeddableId , final List <Column > allPrimaryKeyColumns ) {
111+ private static void handleCompositeForeignKey (final Table table , final Table parentTable , final ForeignKeyConstraint foreignKeyConstraint ,
112+ final Column parentTableField , final EmbeddableClass embeddableId , final List <Column > allPrimaryKeyColumns ) {
113113 List <Column > listOfForeignKeyColumns = listOfForeignKeys (table , foreignKeyConstraint );
114114 //Case: Shared Composite Primary Key
115115 //If composite foreign key is inside the composite primary key, don't remove them from table.
116116 //This case assumes there is a primary composite key
117117 //Add a @MapsId annotation to the referenced table field
118118 if (embeddableId != null && new HashSet <>(allPrimaryKeyColumns ).containsAll (listOfForeignKeyColumns )) {
119- handleSharedCompositePrimaryKey (table , parentTableField , embeddableId , listOfForeignKeyColumns );
119+ handleCompositeForeignKeyInsideCompositePrimaryKey (table , parentTable , parentTableField , embeddableId , listOfForeignKeyColumns );
120120 } else {
121121 //Case1: There is no Composite primary key
122122 //TODO can part of Composite foreign key be a primary key. Is this applicable only to self referencing cases?
@@ -136,8 +136,8 @@ private static void handleCompositeForeignKey(final Table table, final ForeignKe
136136 parentTableField .getAnnotations ().add (JoinColumnsAnnotation .builder ().joinColumns (joinColumns ).build ().toString ());
137137 }
138138
139- private static void handleSharedCompositePrimaryKey (final Table table , final Column parentTableField ,
140- final EmbeddableClass embeddableId , final List <Column > listOfForeignKeyColumns ) {
139+ private static void handleCompositeForeignKeyInsideCompositePrimaryKey (final Table table , final Table parentTable , final Column parentTableField ,
140+ final EmbeddableClass embeddableId , final List <Column > listOfForeignKeyColumns ) {
141141
142142 EmbeddableClass foreignCompositeKeyEmbedded = new EmbeddableClass (); //Create a new embeddable for this foreign composite key
143143 String embeddableName = listOfForeignKeyColumns .stream ().map (Column ::getFieldName ).collect (Collectors .joining ());
0 commit comments