From 1ed42b7f8beb394d077874180eb9ed821d6f52b3 Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Tue, 21 Oct 2025 17:21:33 +0200 Subject: [PATCH 1/7] fix addForeignKeyConstraint --- .../creation/BranchCreationEntity.java | 2 +- .../equipment/creation/VscCreationEntity.java | 4 +-- .../BranchModificationEntity.java | 2 +- .../modification/VscModificationEntity.java | 4 +-- .../changesets/changelog_20251021T145023Z.xml | 27 +++++++++++++++++++ .../db/changelog/db.changelog-master.yaml | 5 +++- 6 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/BranchCreationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/BranchCreationEntity.java index 9d8cf0b7e..84038b1a9 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/BranchCreationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/BranchCreationEntity.java @@ -71,7 +71,7 @@ public class BranchCreationEntity extends EquipmentCreationEntity { @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) @JoinTable( joinColumns = @JoinColumn(name = "branch_id"), foreignKey = @ForeignKey(name = "branch_id_fk"), - inverseJoinColumns = @JoinColumn(name = "operational_limits_groups_id"), inverseForeignKey = @ForeignKey(name = "operational_limits_groups_id_fk")) + inverseJoinColumns = @JoinColumn(name = "operational_limits_groups_id"), inverseForeignKey = @ForeignKey(name = "operational_limits_groups_creation_id_fk")) @OrderColumn(name = "pos_operationalLimitsGroups") private List operationalLimitsGroups; diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/VscCreationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/VscCreationEntity.java index e2caddaee..95b09e054 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/VscCreationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/VscCreationEntity.java @@ -60,7 +60,7 @@ public class VscCreationEntity extends EquipmentCreationEntity { name = "converter_station_1_id", referencedColumnName = "id", foreignKey = @ForeignKey( - name = "converter_station_1_id_fk" + name = "converter_station_creation_1_id_fk" )) private ConverterStationCreationEntity converterStation1; @@ -69,7 +69,7 @@ public class VscCreationEntity extends EquipmentCreationEntity { name = "converter_station_2_id", referencedColumnName = "id", foreignKey = @ForeignKey( - name = "converter_station_2_id_fk" + name = "converter_station_creation_2_id_fk" )) private ConverterStationCreationEntity converterStation2; diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BranchModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BranchModificationEntity.java index 0b4127352..395dd06f5 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BranchModificationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BranchModificationEntity.java @@ -43,7 +43,7 @@ public class BranchModificationEntity extends BasicEquipmentModificationEntity { @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) @JoinTable( joinColumns = @JoinColumn(name = "branch_id"), foreignKey = @ForeignKey(name = "branch_modification_id_fk"), - inverseJoinColumns = @JoinColumn(name = "operational_limits_groups_id"), inverseForeignKey = @ForeignKey(name = "operational_limits_groups_id_fk")) + inverseJoinColumns = @JoinColumn(name = "operational_limits_groups_id"), inverseForeignKey = @ForeignKey(name = "operational_limits_groups_modification_id_fk")) @OrderColumn(name = "pos_operationalLimitsGroups") private List operationalLimitsGroups; diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/VscModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/VscModificationEntity.java index 87c5e4e4f..c026baee7 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/VscModificationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/VscModificationEntity.java @@ -104,7 +104,7 @@ public class VscModificationEntity extends BasicEquipmentModificationEntity { name = "converter_station_1_id", referencedColumnName = "id", foreignKey = @ForeignKey( - name = "converter_station_1_id_fk" + name = "converter_station_modification_1_id_fk" )) private ConverterStationModificationEntity converterStation1; @@ -113,7 +113,7 @@ public class VscModificationEntity extends BasicEquipmentModificationEntity { name = "converter_station_2_id", referencedColumnName = "id", foreignKey = @ForeignKey( - name = "converter_station_2_id_fk" + name = "converter_station_modification_2_id_fk" )) private ConverterStationModificationEntity converterStation2; diff --git a/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml b/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml new file mode 100644 index 000000000..535f3b524 --- /dev/null +++ b/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml index 8ad4fa74e..9c2e6cd5e 100644 --- a/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/src/main/resources/db/changelog/db.changelog-master.yaml @@ -423,4 +423,7 @@ databaseChangeLog: relativeToChangelogFile: true - include: file: changesets/changelog_20250930T132326Z.xml - relativeToChangelogFile: true \ No newline at end of file + relativeToChangelogFile: true + - include: + file: changesets/changelog_20251021T145023Z.xml + relativeToChangelogFile: true From 994411f5275b0af6a3645eeb4d2c602a3f9d42be Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Wed, 22 Oct 2025 10:58:01 +0200 Subject: [PATCH 2/7] fix error --- .../equipment/modification/EquipmentModificationEntity.java | 2 +- .../db/changelog/changesets/changelog_20251021T145023Z.xml | 3 --- src/main/resources/db/changelog/db.changelog-master.yaml | 1 + 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java index 050d0be72..d1e027806 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java @@ -26,7 +26,7 @@ public class EquipmentModificationEntity extends ModificationEntity { private String equipmentId; @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) - @JoinColumn(name = "equipment_modification_id") + @JoinColumn(name = "equipment_modification_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT)) @OrderColumn(name = "insert_position") private List properties; diff --git a/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml b/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml index 535f3b524..3d3f6a84b 100644 --- a/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml +++ b/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml @@ -1,8 +1,5 @@ - - - diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml index 9c2e6cd5e..b1460262d 100644 --- a/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/src/main/resources/db/changelog/db.changelog-master.yaml @@ -427,3 +427,4 @@ databaseChangeLog: - include: file: changesets/changelog_20251021T145023Z.xml relativeToChangelogFile: true + From 6b5666468e56ccb66211dff9a8f39171fbed8de4 Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Wed, 12 Nov 2025 09:14:29 +0100 Subject: [PATCH 3/7] code review remarks --- .../db/changelog/changesets/changelog_20251021T145023Z.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml b/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml index 3d3f6a84b..c2bcfc5d1 100644 --- a/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml +++ b/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml @@ -13,7 +13,7 @@ - + From 242c7bfbadca1ca181595084400b36247801ce7f Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Thu, 13 Nov 2025 09:29:06 +0100 Subject: [PATCH 4/7] fix constraintName --- .../db/changelog/changesets/changelog_20251021T145023Z.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml b/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml index c2bcfc5d1..ae780740f 100644 --- a/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml +++ b/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml @@ -16,9 +16,9 @@ - + - + From 11a863ea4e3d7270e6d4044249934f0dc5d638ac Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Thu, 13 Nov 2025 13:53:37 +0100 Subject: [PATCH 5/7] code review remarks --- .../equipment/modification/EquipmentModificationEntity.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java index d1e027806..85ab82d18 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java @@ -26,7 +26,10 @@ public class EquipmentModificationEntity extends ModificationEntity { private String equipmentId; @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) - @JoinColumn(name = "equipment_modification_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT)) + @JoinTable( + joinColumns = @JoinColumn(name = "equipment_modification_id", referencedColumnName = "id"), + inverseJoinColumns = @JoinColumn(name = "id") + ) @OrderColumn(name = "insert_position") private List properties; From 6d362452bad99d16b8f0cb4f97609ab6a4b150ca Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Thu, 13 Nov 2025 13:54:54 +0100 Subject: [PATCH 6/7] Revert "code review remarks" This reverts commit 11a863ea4e3d7270e6d4044249934f0dc5d638ac. --- .../equipment/modification/EquipmentModificationEntity.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java index 85ab82d18..d1e027806 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java @@ -26,10 +26,7 @@ public class EquipmentModificationEntity extends ModificationEntity { private String equipmentId; @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) - @JoinTable( - joinColumns = @JoinColumn(name = "equipment_modification_id", referencedColumnName = "id"), - inverseJoinColumns = @JoinColumn(name = "id") - ) + @JoinColumn(name = "equipment_modification_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT)) @OrderColumn(name = "insert_position") private List properties; From 5317035c347228ca19573b43a2f0b875cc6977ab Mon Sep 17 00:00:00 2001 From: Rehili Ghazwa Date: Thu, 13 Nov 2025 15:39:45 +0100 Subject: [PATCH 7/7] suggested for properties foreignKey --- .../modification/EquipmentModificationEntity.java | 15 +++++++++------ .../modification/FreePropertyEntity.java | 12 ++++++++++-- .../changesets/changelog_20251021T145023Z.xml | 3 +++ .../service/ModificationRepositoryTest.java | 2 +- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java index d1e027806..46533b504 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/EquipmentModificationEntity.java @@ -13,6 +13,7 @@ import org.gridsuite.modification.dto.ModificationInfos; import org.gridsuite.modification.server.entities.ModificationEntity; +import java.util.ArrayList; import java.util.List; /** @@ -25,10 +26,9 @@ public class EquipmentModificationEntity extends ModificationEntity { @Column(name = "equipmentId") private String equipmentId; - @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) - @JoinColumn(name = "equipment_modification_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT)) + @OneToMany(mappedBy = "modification", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) @OrderColumn(name = "insert_position") - private List properties; + private List properties = new ArrayList<>(); protected EquipmentModificationEntity(EquipmentModificationInfos equipmentModificationInfos) { super(equipmentModificationInfos); @@ -45,8 +45,11 @@ private void assignAttributes(EquipmentModificationInfos equipmentModificationIn equipmentId = equipmentModificationInfos.getEquipmentId(); List newProperties = equipmentModificationInfos.getProperties() == null ? null : equipmentModificationInfos.getProperties().stream() - .map(FreePropertyEntity::new) - .toList(); + .map(info -> { + FreePropertyEntity entity = new FreePropertyEntity(info); + entity.setModification(this); + return entity; + }).toList(); if (this.properties != null) { // update using the same reference with clear/add (to avoid JPA exception) this.properties.clear(); @@ -54,7 +57,7 @@ private void assignAttributes(EquipmentModificationInfos equipmentModificationIn this.properties.addAll(newProperties); } } else { - this.properties = newProperties; + this.properties = (newProperties != null) ? new ArrayList<>(newProperties) : new ArrayList<>(); } } } diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/FreePropertyEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/FreePropertyEntity.java index bbc2e2698..c11ff58a3 100644 --- a/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/FreePropertyEntity.java +++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/modification/FreePropertyEntity.java @@ -11,15 +11,18 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.Setter; import lombok.experimental.SuperBuilder; +import org.gridsuite.modification.dto.FreePropertyInfos; +import org.gridsuite.modification.server.entities.ModificationEntity; import java.util.UUID; -import org.gridsuite.modification.dto.FreePropertyInfos; /** * @author Joris Mancini */ @Getter +@Setter @NoArgsConstructor @AllArgsConstructor @SuperBuilder @@ -46,6 +49,10 @@ public class FreePropertyEntity { @Column(name = "previous_value") private String previousValue; + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "equipment_modification_id", referencedColumnName = "id", foreignKey = @ForeignKey(name = "free_property_modification_id_fk_constraint")) + private ModificationEntity modification; + public FreePropertyInfos toInfos() { return FreePropertyInfos.builder() .name(name) @@ -57,6 +64,7 @@ public FreePropertyInfos toInfos() { } public FreePropertyEntity(FreePropertyInfos freePropertyInfos) { - this(null, freePropertyInfos.getName(), freePropertyInfos.getValue(), freePropertyInfos.isDeletionMark(), freePropertyInfos.isAdded(), freePropertyInfos.getPreviousValue()); + this(null, freePropertyInfos.getName(), freePropertyInfos.getValue(), freePropertyInfos.isDeletionMark(), + freePropertyInfos.isAdded(), freePropertyInfos.getPreviousValue(), null); } } diff --git a/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml b/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml index ae780740f..22187e9cb 100644 --- a/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml +++ b/src/main/resources/db/changelog/changesets/changelog_20251021T145023Z.xml @@ -21,4 +21,7 @@ + + + diff --git a/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java b/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java index efca3a6e7..b2cce1733 100644 --- a/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java +++ b/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java @@ -768,7 +768,7 @@ void testSubstationCreation() { SQLStatementCountValidator.reset(); networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true); - assertRequestsCount(5, 0, 2, 4); + assertRequestsCount(5, 0, 1, 4); assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true), new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage());