From e6367d0b0c755ca6efc47472d0313c4e59bbd2cd Mon Sep 17 00:00:00 2001 From: Stanislav Trailov Date: Mon, 8 Dec 2025 09:26:35 +0200 Subject: [PATCH] Remove schema generation related annotations in Jpa layer (#2837) * Remove schema generation related annotations in Jpa layer Signed-off-by: strailov * Update hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAction.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * forgotten foreign key annotations removed Signed-off-by: strailov * remove missed foreign key annotations Signed-off-by: strailov * foreign key from autoConfirmation Signed-off-by: strailov --------- Signed-off-by: strailov Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../jpa/model/DistributionSetTypeElement.java | 10 +---- .../repository/jpa/model/JpaAction.java | 23 +++-------- .../repository/jpa/model/JpaActionStatus.java | 17 ++------ .../repository/jpa/model/JpaArtifact.java | 12 +----- .../jpa/model/JpaAutoConfirmationStatus.java | 6 +-- .../jpa/model/JpaDistributionSet.java | 34 ++++------------ .../jpa/model/JpaDistributionSetTag.java | 8 +--- .../jpa/model/JpaDistributionSetType.java | 8 +--- .../repository/jpa/model/JpaRollout.java | 8 +--- .../repository/jpa/model/JpaRolloutGroup.java | 8 +--- .../jpa/model/JpaSoftwareModule.java | 17 ++------ .../jpa/model/JpaSoftwareModuleType.java | 8 +--- .../repository/jpa/model/JpaTarget.java | 39 ++++++------------- .../jpa/model/JpaTargetFilterQuery.java | 11 +----- .../repository/jpa/model/JpaTargetTag.java | 9 +---- .../repository/jpa/model/JpaTargetType.java | 19 ++------- .../jpa/model/JpaTenantConfiguration.java | 5 +-- .../jpa/model/JpaTenantMetaData.java | 13 +------ .../jpa/model/RolloutTargetGroup.java | 8 +--- 19 files changed, 53 insertions(+), 210 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/DistributionSetTypeElement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/DistributionSetTypeElement.java index d0ba09076..01426708a 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/DistributionSetTypeElement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/DistributionSetTypeElement.java @@ -14,10 +14,8 @@ import java.io.Serializable; import java.util.Objects; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.EmbeddedId; import jakarta.persistence.Entity; -import jakarta.persistence.ForeignKey; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.MapsId; @@ -47,17 +45,13 @@ public class DistributionSetTypeElement implements Serializable { @MapsId("dsType") @ManyToOne(optional = false) - @JoinColumn( - name = "distribution_set_type", nullable = false, updatable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_type_element_distribution_set_type")) + @JoinColumn(name = "distribution_set_type", nullable = false, updatable = false) private JpaDistributionSetType dsType; @Getter @MapsId("smType") @ManyToOne(optional = false) - @JoinColumn( - name = "software_module_type", nullable = false, updatable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_type_element_software_module_type")) + @JoinColumn(name = "software_module_type", nullable = false, updatable = false) private JpaSoftwareModuleType smType; @Setter diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAction.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAction.java index 4b8cbfe81..859b224d3 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAction.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAction.java @@ -28,8 +28,6 @@ import jakarta.persistence.Convert; import jakarta.persistence.Converter; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; -import jakarta.persistence.Index; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.NamedAttributeNode; @@ -59,13 +57,7 @@ import org.eclipse.hawkbit.repository.model.Target; /** * JPA implementation of {@link Action}. */ -@Table( - name = "sp_action", - indexes = { - @Index(name = "sp_idx_action_01", columnList = "tenant,distribution_set"), - @Index(name = "sp_idx_action_02", columnList = "tenant,target,active"), - @Index(name = "sp_idx_action_prim", columnList = "tenant,id") - }) +@Table(name = "sp_action") @NamedEntityGraphs({ @NamedEntityGraph(name = "Action.all", attributeNodes = { @NamedAttributeNode(value = "target", subgraph = "target.ds"), @@ -87,16 +79,14 @@ public class JpaAction extends AbstractJpaTenantAwareBaseEntity implements Actio @Getter @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn( - name = "distribution_set", nullable = false, updatable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_distribution_set")) + name = "distribution_set", nullable = false, updatable = false) @NotNull private JpaDistributionSet distributionSet; @Getter @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn( - name = "target", updatable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_target")) + name = "target", updatable = false) @NotNull private JpaTarget target; @@ -136,15 +126,12 @@ public class JpaAction extends AbstractJpaTenantAwareBaseEntity implements Actio @Getter @ManyToOne(fetch = FetchType.LAZY) @JoinColumn( - name = "rollout_group", updatable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_rollout_group")) + name = "rollout_group", updatable = false) private JpaRolloutGroup rolloutGroup; @Getter @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn( - name = "rollout", updatable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_rollout")) + @JoinColumn(name = "rollout", updatable = false) private JpaRollout rollout; // a cron expression to be used for scheduling. diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java index 448acd6f6..a01baa6c9 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java @@ -17,13 +17,10 @@ import java.util.Optional; import jakarta.persistence.CollectionTable; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.Convert; import jakarta.persistence.ElementCollection; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; -import jakarta.persistence.Index; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.NamedAttributeNode; @@ -42,10 +39,7 @@ import org.eclipse.hawkbit.repository.model.ActionStatus; * Entity to store the status for a specific action. */ @NoArgsConstructor // JPA default constructor -@Table(name = "sp_action_status", indexes = { - @Index(name = "sp_idx_action_status_02", columnList = "tenant,action,status"), - @Index(name = "sp_idx_action_status_prim", columnList = "tenant,id") -}) +@Table(name = "sp_action_status") @NamedEntityGraph(name = "ActionStatus.withMessages", attributeNodes = { @NamedAttributeNode("messages") }) @Entity // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @@ -63,9 +57,7 @@ public class JpaActionStatus extends AbstractJpaTenantAwareBaseEntity implements private long timestamp; @ManyToOne(fetch = FetchType.LAZY, optional = false) - @JoinColumn( - name = "action", nullable = false, updatable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_status_action")) + @JoinColumn(name = "action", nullable = false, updatable = false) @NotNull private JpaAction action; @@ -81,10 +73,7 @@ public class JpaActionStatus extends AbstractJpaTenantAwareBaseEntity implements @ElementCollection(fetch = FetchType.LAZY, targetClass = String.class) @CollectionTable( name = "sp_action_status_messages", - joinColumns = @JoinColumn( - name = "action_status", nullable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_status_messages_action_status")), - indexes = { @Index(name = "fk_action_status_messages_action_status", columnList = "action_status") }) + joinColumns = @JoinColumn(name = "action_status", nullable = false)) @Column(name = "detail_message", length = MESSAGE_ENTRY_LENGTH, nullable = false) private List messages; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaArtifact.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaArtifact.java index d76752b1f..9df9366f8 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaArtifact.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaArtifact.java @@ -13,11 +13,8 @@ import java.io.Serial; import jakarta.persistence.CascadeType; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; -import jakarta.persistence.Index; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; @@ -37,11 +34,7 @@ import org.eclipse.hawkbit.repository.model.SoftwareModule; @NoArgsConstructor // Default constructor needed for JPA entities. @Setter @Getter -@Table(name = "sp_artifact", - indexes = { - @Index(name = "sp_idx_artifact_01", columnList = "tenant,software_module"), - @Index(name = "sp_idx_artifact_02", columnList = "tenant,sha1_hash"), - @Index(name = "sp_idx_artifact_prim", columnList = "tenant,id") }) +@Table(name = "sp_artifact") @Entity // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @SuppressWarnings("squid:S2160") @@ -52,8 +45,7 @@ public class JpaArtifact extends AbstractJpaTenantAwareBaseEntity implements Art @ManyToOne(optional = false, cascade = { CascadeType.PERSIST }, fetch = FetchType.LAZY) @JoinColumn( - name = "software_module", nullable = false, updatable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_artifact_software_module")) + name = "software_module", nullable = false, updatable = false) private JpaSoftwareModule softwareModule; @Column(name = "provided_file_name", length = 256, updatable = false) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAutoConfirmationStatus.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAutoConfirmationStatus.java index ead19eb8b..f1336d2ba 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAutoConfirmationStatus.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaAutoConfirmationStatus.java @@ -10,10 +10,8 @@ package org.eclipse.hawkbit.repository.jpa.model; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; @@ -37,9 +35,7 @@ public class JpaAutoConfirmationStatus extends AbstractJpaTenantAwareBaseEntity // actually it is OneToOne - but lazy loading is not supported for OneToOne (at least for hibernate 6.6.2) @ManyToOne(optional = false, fetch = FetchType.LAZY) - @JoinColumn( - name = "target", nullable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_target_conf_status_target")) + @JoinColumn(name = "target", nullable = false) private JpaTarget target; @Column(name = "initiator", length = USERNAME_FIELD_LENGTH) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java index 33deb1699..ac604836d 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java @@ -20,12 +20,9 @@ import java.util.Set; import jakarta.persistence.CollectionTable; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.ElementCollection; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; -import jakarta.persistence.Index; import jakarta.persistence.JoinColumn; import jakarta.persistence.JoinTable; import jakarta.persistence.ManyToMany; @@ -34,7 +31,6 @@ import jakarta.persistence.MapKeyColumn; import jakarta.persistence.NamedAttributeNode; import jakarta.persistence.NamedEntityGraph; import jakarta.persistence.Table; -import jakarta.persistence.UniqueConstraint; import jakarta.validation.constraints.NotNull; import lombok.Getter; @@ -63,11 +59,7 @@ import org.springframework.core.annotation.Order; @Getter @ToString(callSuper = true) @Entity -@Table(name = "sp_distribution_set", - uniqueConstraints = { @UniqueConstraint(columnNames = { "name", "version", "tenant" }, name = "uk_distribution_set") }, - indexes = { - @Index(name = "sp_idx_distribution_set_01", columnList = "tenant,deleted"), - @Index(name = "sp_idx_distribution_set_prim", columnList = "tenant,id") }) +@Table(name = "sp_distribution_set") @NamedEntityGraph(name = "DistributionSet.detail", attributeNodes = { @NamedAttributeNode("modules"), @NamedAttributeNode("tags"), @NamedAttributeNode("type") }) // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @@ -80,36 +72,25 @@ public class JpaDistributionSet private static final long serialVersionUID = 1L; @ManyToOne(fetch = FetchType.LAZY, optional = false, targetEntity = JpaDistributionSetType.class) - @JoinColumn( - name = "ds_type", nullable = false, updatable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_distribution_set_ds_type")) + @JoinColumn(name = "ds_type", nullable = false, updatable = false) @NotNull private DistributionSetType type; @ManyToMany(targetEntity = JpaSoftwareModule.class, fetch = FetchType.LAZY) @JoinTable( name = "sp_ds_sm", - joinColumns = { - @JoinColumn( - name = "ds_id", nullable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_sm_ds_id")) }, - inverseJoinColumns = { - @JoinColumn( - name = "sm_id", nullable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_sm_sm_id")) }) + joinColumns = { @JoinColumn(name = "ds_id", nullable = false) }, + inverseJoinColumns = { @JoinColumn(name = "sm_id", nullable = false) }) private Set modules = new HashSet<>(); @ManyToMany(targetEntity = JpaDistributionSetTag.class) @JoinTable( name = "sp_ds_tag", joinColumns = { - @JoinColumn( - name = "ds", nullable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_tag_ds")) }, + @JoinColumn(name = "ds", nullable = false) }, inverseJoinColumns = { @JoinColumn( - name = "tag", nullable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_tag_tag")) }) + name = "tag", nullable = false) }) private Set tags = new HashSet<>(); // no cascade option on an ElementCollection, the target objects are always persisted, merged, removed with their parent @@ -117,8 +98,7 @@ public class JpaDistributionSet @ElementCollection @CollectionTable( name = "sp_ds_metadata", - joinColumns = { @JoinColumn(name = "ds", nullable = false) }, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_metadata_ds")) + joinColumns = { @JoinColumn(name = "ds", nullable = false) }) @MapKeyColumn(name = "meta_key", length = DistributionSet.METADATA_MAX_KEY_SIZE) @Column(name = "meta_value", length = DistributionSet.METADATA_MAX_VALUE_SIZE) private Map metadata = new HashMap<>(); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetTag.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetTag.java index 0e6344533..a3253696c 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetTag.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetTag.java @@ -14,10 +14,8 @@ import java.util.List; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; -import jakarta.persistence.Index; import jakarta.persistence.ManyToMany; import jakarta.persistence.Table; -import jakarta.persistence.UniqueConstraint; import lombok.NoArgsConstructor; import org.eclipse.hawkbit.repository.event.EventPublisherHolder; @@ -32,11 +30,7 @@ import org.eclipse.hawkbit.repository.model.DistributionSetTag; */ @NoArgsConstructor // Default constructor needed for JPA entities. @Entity -@Table(name = "sp_distribution_set_tag", - indexes = { - @Index(name = "sp_idx_distribution_set_tag_prim", columnList = "tenant,id"), - @Index(name = "sp_idx_distribution_set_tag_01", columnList = "tenant,name") }, - uniqueConstraints = @UniqueConstraint(columnNames = { "name", "tenant" }, name = "uk_distribution_set_tag")) +@Table(name = "sp_distribution_set_tag") // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @SuppressWarnings("squid:S2160") public class JpaDistributionSetTag extends JpaTag implements DistributionSetTag, EventAwareEntity { diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java index 9b83efc13..840b79248 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSetType.java @@ -18,10 +18,8 @@ import jakarta.persistence.CascadeType; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; -import jakarta.persistence.Index; import jakarta.persistence.OneToMany; import jakarta.persistence.Table; -import jakarta.persistence.UniqueConstraint; import lombok.Getter; import lombok.NoArgsConstructor; @@ -39,11 +37,7 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType; */ @NoArgsConstructor // Default constructor needed for JPA entities. @Entity -@Table(name = "sp_distribution_set_type", indexes = { - @Index(name = "sp_idx_distribution_set_type_01", columnList = "tenant,deleted"), - @Index(name = "sp_idx_distribution_set_type_prim", columnList = "tenant,id") }, uniqueConstraints = { - @UniqueConstraint(columnNames = { "tenant", "type_key" }, name = "uk_sp_distribution_set_type_type_key"), - @UniqueConstraint(columnNames = { "tenant", "name" }, name = "uk_sp_distribution_set_type_name") }) +@Table(name = "sp_distribution_set_type") // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @SuppressWarnings("squid:S2160") public class JpaDistributionSetType extends AbstractJpaTypeEntity implements DistributionSetType, EventAwareEntity { diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java index 66710e270..30818dec4 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java @@ -18,12 +18,10 @@ import java.util.Optional; import jakarta.persistence.CascadeType; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.Convert; import jakarta.persistence.Converter; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.NamedAttributeNode; @@ -32,7 +30,6 @@ import jakarta.persistence.NamedEntityGraphs; import jakarta.persistence.OneToMany; import jakarta.persistence.Table; import jakarta.persistence.Transient; -import jakarta.persistence.UniqueConstraint; import jakarta.validation.constraints.Max; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotNull; @@ -59,7 +56,7 @@ import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus; */ @NoArgsConstructor // Default constructor needed for JPA entities. @Entity -@Table(name = "sp_rollout", uniqueConstraints = @UniqueConstraint(columnNames = { "name", "tenant" }, name = "uk_rollout")) +@Table(name = "sp_rollout") @NamedEntityGraphs({ @NamedEntityGraph(name = "Rollout.ds", attributeNodes = { @NamedAttributeNode("distributionSet") }) }) // squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities // java:S1710 - not possible to use without group annotation @@ -82,8 +79,7 @@ public class JpaRollout extends AbstractJpaNamedEntity implements Rollout, Event @Getter @ManyToOne(fetch = FetchType.LAZY, optional = false) @JoinColumn( - name = "distribution_set", nullable = false, updatable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_rollout_distribution_set")) + name = "distribution_set", nullable = false, updatable = false) @NotNull private JpaDistributionSet distributionSet; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRolloutGroup.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRolloutGroup.java index 11c7c24d6..dee59212e 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRolloutGroup.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRolloutGroup.java @@ -15,18 +15,15 @@ import java.util.Map; import jakarta.persistence.CascadeType; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.Convert; import jakarta.persistence.Converter; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; import jakarta.persistence.Table; import jakarta.persistence.Transient; -import jakarta.persistence.UniqueConstraint; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; @@ -46,7 +43,7 @@ import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus; */ @NoArgsConstructor // Default constructor needed for JPA entities. @Entity -@Table(name = "sp_rollout_group", uniqueConstraints = @UniqueConstraint(columnNames = { "name", "rollout", "tenant" }, name = "uk_rollout_group")) +@Table(name = "sp_rollout_group") // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @SuppressWarnings("squid:S2160") public class JpaRolloutGroup extends AbstractJpaNamedEntity implements RolloutGroup, EventAwareEntity { @@ -57,8 +54,7 @@ public class JpaRolloutGroup extends AbstractJpaNamedEntity implements RolloutGr @Getter @ManyToOne(fetch = FetchType.LAZY) @JoinColumn( - name = "rollout", nullable = false, updatable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_rollout_group_rollout")) + name = "rollout", nullable = false, updatable = false) private JpaRollout rollout; @Setter diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java index 6e5c988cb..70fec71f5 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java @@ -20,13 +20,10 @@ import java.util.Optional; import jakarta.persistence.CascadeType; import jakarta.persistence.CollectionTable; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.ElementCollection; import jakarta.persistence.Embeddable; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; -import jakarta.persistence.Index; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToMany; import jakarta.persistence.ManyToOne; @@ -35,7 +32,6 @@ import jakarta.persistence.NamedAttributeNode; import jakarta.persistence.NamedEntityGraph; import jakarta.persistence.OneToMany; import jakarta.persistence.Table; -import jakarta.persistence.UniqueConstraint; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; @@ -63,12 +59,7 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType; @Getter @ToString(callSuper = true) @Entity -@Table(name = "sp_software_module", - uniqueConstraints = @UniqueConstraint(columnNames = { "sm_type", "name", "version", "tenant" }, name = "uk_software_module"), - indexes = { - @Index(name = "sp_idx_software_module_01", columnList = "tenant,deleted,name,version"), - @Index(name = "sp_idx_software_module_02", columnList = "tenant,deleted,sm_type"), - @Index(name = "sp_idx_software_module_prim", columnList = "tenant,id") }) +@Table(name = "sp_software_module") @NamedEntityGraph(name = "SoftwareModule.artifacts", attributeNodes = { @NamedAttributeNode("artifacts") }) // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @SuppressWarnings("squid:S2160") @@ -80,8 +71,7 @@ public class JpaSoftwareModule private static final long serialVersionUID = 1L; @ManyToOne - @JoinColumn(name = "sm_type", nullable = false, updatable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_software_module_sm_type")) + @JoinColumn(name = "sm_type", nullable = false, updatable = false) @NotNull private JpaSoftwareModuleType type; @@ -101,8 +91,7 @@ public class JpaSoftwareModule @ElementCollection @CollectionTable( name = "sp_sm_metadata", - joinColumns = { @JoinColumn(name = "sm", nullable = false) }, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_sm_metadata_sm")) + joinColumns = { @JoinColumn(name = "sm", nullable = false) }) @MapKeyColumn(name = "meta_key", length = SoftwareModule.METADATA_KEY_MAX_SIZE) private Map metadata; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModuleType.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModuleType.java index 43796cd25..24d51ce26 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModuleType.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModuleType.java @@ -13,9 +13,7 @@ import java.io.Serial; import jakarta.persistence.Column; import jakarta.persistence.Entity; -import jakarta.persistence.Index; import jakarta.persistence.Table; -import jakarta.persistence.UniqueConstraint; import jakarta.validation.constraints.Min; import lombok.Getter; @@ -33,11 +31,7 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType; @NoArgsConstructor // Default constructor for JPA @Getter @Entity -@Table(name = "sp_software_module_type", indexes = { - @Index(name = "sp_idx_software_module_type_01", columnList = "tenant,deleted"), - @Index(name = "sp_idx_software_module_type_prim", columnList = "tenant,id") }, uniqueConstraints = { - @UniqueConstraint(columnNames = { "tenant", "type_key" }, name = "uk_sp_software_module_type_type_key"), - @UniqueConstraint(columnNames = { "tenant", "name" }, name = "uk_sp_software_module_type_name") }) +@Table(name = "sp_software_module_type") // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @SuppressWarnings("squid:S2160") public class JpaSoftwareModuleType extends AbstractJpaTypeEntity implements SoftwareModuleType, EventAwareEntity { diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTarget.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTarget.java index e2dd0eff7..8c3855cd6 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTarget.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTarget.java @@ -20,14 +20,11 @@ import java.util.Set; import jakarta.persistence.CascadeType; import jakarta.persistence.CollectionTable; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.Convert; import jakarta.persistence.Converter; import jakarta.persistence.ElementCollection; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; -import jakarta.persistence.Index; import jakarta.persistence.JoinColumn; import jakarta.persistence.JoinTable; import jakarta.persistence.ManyToMany; @@ -39,7 +36,6 @@ import jakarta.persistence.NamedEntityGraphs; import jakarta.persistence.OneToMany; import jakarta.persistence.PrimaryKeyJoinColumn; import jakarta.persistence.Table; -import jakarta.persistence.UniqueConstraint; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; @@ -70,14 +66,7 @@ import org.springframework.util.ObjectUtils; @NoArgsConstructor // Default constructor for JPA @Slf4j @Entity -@Table(name = "sp_target", - indexes = { - @Index(name = "sp_idx_target_01", columnList = "tenant,name,assigned_distribution_set"), - @Index(name = "sp_idx_target_03", columnList = "tenant,controller_id,assigned_distribution_set"), - @Index(name = "sp_idx_target_04", columnList = "tenant,created_at"), - @Index(name = "sp_idx_target_05", columnList = "tenant,last_modified_at"), - @Index(name = "sp_idx_target_prim", columnList = "tenant,id") }, - uniqueConstraints = @UniqueConstraint(columnNames = { "controller_id", "tenant" }, name = "uk_target_controller_id")) +@Table(name = "sp_target") @NamedEntityGraphs({ @NamedEntityGraph(name = "Target.details", attributeNodes = { @NamedAttributeNode("targetType"), @@ -139,13 +128,13 @@ public class JpaTarget extends AbstractJpaNamedEntity implements Target, EventAw @Setter @Getter @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "installed_distribution_set", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_target_inst_ds")) + @JoinColumn(name = "installed_distribution_set") private JpaDistributionSet installedDistributionSet; @Setter @Getter @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "assigned_distribution_set", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_target_assign_ds")) + @JoinColumn(name = "assigned_distribution_set") private JpaDistributionSet assignedDistributionSet; @Setter @@ -167,21 +156,15 @@ public class JpaTarget extends AbstractJpaNamedEntity implements Target, EventAw @Setter @Getter @ManyToOne(fetch = FetchType.LAZY, targetEntity = JpaTargetType.class) - @JoinColumn(name = "target_type", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_target_relation_target_type")) + @JoinColumn(name = "target_type") private TargetType targetType; @ManyToMany(targetEntity = JpaTargetTag.class) @JoinTable( name = "sp_target_target_tag", - joinColumns = { - @JoinColumn( - name = "target", nullable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_target_target_tag_target")) }, - inverseJoinColumns = { - @JoinColumn( - name = "tag", nullable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_target_target_tag_tag")) - }) + joinColumns = { @JoinColumn(name = "target", nullable = false) }, + inverseJoinColumns = { @JoinColumn(name = "tag", nullable = false) } + ) private Set tags; // no cascade option on an ElementCollection, the target objects are always persisted, merged, removed with their parent @@ -189,8 +172,8 @@ public class JpaTarget extends AbstractJpaNamedEntity implements Target, EventAw @ElementCollection @CollectionTable( name = "sp_target_attributes", - joinColumns = { @JoinColumn(name = "target", nullable = false) }, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_target_attributes_target")) + joinColumns = { @JoinColumn(name = "target", nullable = false) } + ) @MapKeyColumn(name = "attribute_key", length = Target.CONTROLLER_ATTRIBUTE_MAX_KEY_SIZE) @Column(name = "attribute_value", length = Target.CONTROLLER_ATTRIBUTE_MAX_VALUE_SIZE) private Map controllerAttributes; @@ -200,8 +183,8 @@ public class JpaTarget extends AbstractJpaNamedEntity implements Target, EventAw @ElementCollection @CollectionTable( name = "sp_target_metadata", - joinColumns = { @JoinColumn(name = "target", nullable = false) }, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_target_metadata_target")) + joinColumns = { @JoinColumn(name = "target", nullable = false) } + ) @MapKeyColumn(name = "meta_key", length = Target.METADATA_MAX_KEY_SIZE) @Column(name = "meta_value", length = Target.METADATA_MAX_VALUE_SIZE) private Map metadata; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java index fc829d5fd..d48fc2c6d 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetFilterQuery.java @@ -13,15 +13,12 @@ import java.io.Serial; import java.util.Optional; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.Convert; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; -import jakarta.persistence.UniqueConstraint; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.Size; @@ -44,9 +41,7 @@ import org.eclipse.hawkbit.repository.model.TargetFilterQuery; @Setter @Getter @Entity -@Table( - name = "sp_target_filter_query", - uniqueConstraints = @UniqueConstraint(columnNames = { "name", "tenant" }, name = "uk_target_filter_query")) +@Table(name = "sp_target_filter_query") // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @SuppressWarnings("squid:S2160") public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity implements TargetFilterQuery, EventAwareEntity { @@ -65,9 +60,7 @@ public class JpaTargetFilterQuery extends AbstractJpaTenantAwareBaseEntity imple private String query; @ManyToOne(fetch = FetchType.LAZY, targetEntity = JpaDistributionSet.class) - @JoinColumn( - name = "auto_assign_distribution_set", - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_target_filter_query_auto_assign_distribution_set")) + @JoinColumn(name = "auto_assign_distribution_set") private DistributionSet autoAssignDistributionSet; @Column(name = "auto_assign_action_type") diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetTag.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetTag.java index e8bc77dc5..8485135a2 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetTag.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetTag.java @@ -12,9 +12,7 @@ package org.eclipse.hawkbit.repository.jpa.model; import java.io.Serial; import jakarta.persistence.Entity; -import jakarta.persistence.Index; import jakarta.persistence.Table; -import jakarta.persistence.UniqueConstraint; import lombok.NoArgsConstructor; import lombok.ToString; @@ -30,12 +28,7 @@ import org.eclipse.hawkbit.repository.model.TargetTag; @NoArgsConstructor // Default constructor for JPA @ToString(callSuper = true) @Entity -@Table( - name = "sp_target_tag", - indexes = { - @Index(name = "sp_idx_target_tag_prim", columnList = "tenant,id"), - @Index(name = "sp_idx_target_tag_01", columnList = "tenant,name") }, - uniqueConstraints = @UniqueConstraint(columnNames = { "name", "tenant" }, name = "uk_target_tag")) +@Table(name = "sp_target_tag") public class JpaTargetTag extends JpaTag implements TargetTag, EventAwareEntity { @Serial diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetType.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetType.java index c458d8473..cec309ade 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetType.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTargetType.java @@ -14,15 +14,11 @@ import java.util.Collections; import java.util.HashSet; import java.util.Set; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.Entity; -import jakarta.persistence.ForeignKey; -import jakarta.persistence.Index; import jakarta.persistence.JoinColumn; import jakarta.persistence.JoinTable; import jakarta.persistence.ManyToMany; import jakarta.persistence.Table; -import jakarta.persistence.UniqueConstraint; import lombok.NoArgsConstructor; import lombok.ToString; @@ -40,9 +36,7 @@ import org.eclipse.hawkbit.repository.model.TargetType; @NoArgsConstructor // Default constructor for JPA @ToString(callSuper = true) @Entity -@Table(name = "sp_target_type", indexes = { - @Index(name = "sp_idx_target_type_prim", columnList = "tenant,id") }, uniqueConstraints = { - @UniqueConstraint(columnNames = { "name", "tenant" }, name = "uk_target_name") }) +@Table(name = "sp_target_type") @SuppressWarnings("java:S2160") // the super class equals/hashcode shall be used public class JpaTargetType extends AbstractJpaTypeEntity implements TargetType, EventAwareEntity { @@ -52,14 +46,9 @@ public class JpaTargetType extends AbstractJpaTypeEntity implements TargetType, @ManyToMany(targetEntity = JpaDistributionSetType.class) @JoinTable( name = "sp_target_type_ds_type", - joinColumns = { - @JoinColumn( - name = "target_type", nullable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_target_type_ds_type_target_type")) }, - inverseJoinColumns = { - @JoinColumn( - name = "distribution_set_type", nullable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_target_type_ds_type_distribution_set_type")) }) + joinColumns = { @JoinColumn(name = "target_type", nullable = false) }, + inverseJoinColumns = { @JoinColumn(name = "distribution_set_type", nullable = false) } + ) private Set distributionSetTypes = new HashSet<>(); public JpaTargetType(final String key, final String name, final String description, final String colour) { diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantConfiguration.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantConfiguration.java index 3790edeab..64c7566bf 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantConfiguration.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantConfiguration.java @@ -15,7 +15,6 @@ import jakarta.persistence.Basic; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Table; -import jakarta.persistence.UniqueConstraint; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; @@ -35,9 +34,7 @@ import org.eclipse.hawkbit.repository.model.TenantConfiguration; @Setter @Getter @Entity -@Table( - name = "sp_tenant_configuration", - uniqueConstraints = @UniqueConstraint(columnNames = { "conf_key", "tenant" }, name = "uk_tenant_configuration")) +@Table(name = "sp_tenant_configuration") // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @SuppressWarnings("squid:S2160") public class JpaTenantConfiguration extends AbstractJpaTenantAwareBaseEntity implements TenantConfiguration, EventAwareEntity { diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantMetaData.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantMetaData.java index d54dbbe10..718ce410a 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantMetaData.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaTenantMetaData.java @@ -12,18 +12,14 @@ package org.eclipse.hawkbit.repository.jpa.model; import java.io.Serial; import jakarta.persistence.Column; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.Entity; import jakarta.persistence.EntityManager; import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; -import jakarta.persistence.Index; import jakarta.persistence.JoinColumn; import jakarta.persistence.NamedAttributeNode; import jakarta.persistence.NamedEntityGraph; import jakarta.persistence.OneToOne; import jakarta.persistence.Table; -import jakarta.persistence.UniqueConstraint; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; @@ -44,10 +40,7 @@ import org.eclipse.hawkbit.repository.model.TenantMetaData; @NoArgsConstructor // Default constructor for JPA @Setter @Getter -@Table( - name = "sp_tenant", - indexes = { @Index(name = "sp_idx_tenant_prim", columnList = "tenant,id") }, - uniqueConstraints = { @UniqueConstraint(columnNames = { "tenant" }, name = "uk_tenant") }) +@Table(name = "sp_tenant") @NamedEntityGraph(name = "TenantMetaData.withDetails", attributeNodes = { @NamedAttributeNode("defaultDsType") }) @Entity // exception squid:S2160 - BaseEntity equals/hashcode is handling correctly for sub entities @@ -63,9 +56,7 @@ public class JpaTenantMetaData extends AbstractJpaBaseEntity implements TenantMe private String tenant; @OneToOne(fetch = FetchType.LAZY) - @JoinColumn( - name = "default_ds_type", nullable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_sp_tenant_default_ds_type")) + @JoinColumn(name = "default_ds_type", nullable = false) private JpaDistributionSetType defaultDsType; public JpaTenantMetaData(final DistributionSetType defaultDsType, final String tenant) { diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/RolloutTargetGroup.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/RolloutTargetGroup.java index c8d62200a..a512f84e6 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/RolloutTargetGroup.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/RolloutTargetGroup.java @@ -14,10 +14,8 @@ import java.io.Serializable; import java.util.List; import jakarta.persistence.CascadeType; -import jakarta.persistence.ConstraintMode; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; -import jakarta.persistence.ForeignKey; import jakarta.persistence.Id; import jakarta.persistence.IdClass; import jakarta.persistence.JoinColumn; @@ -44,14 +42,12 @@ public class RolloutTargetGroup implements Serializable { @Id @ManyToOne(optional = false, targetEntity = JpaRolloutGroup.class, fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST }) - @JoinColumn(name = "rollout_group", nullable = false, updatable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_rollout_target_group_rollout_group")) + @JoinColumn(name = "rollout_group", nullable = false, updatable = false) private JpaRolloutGroup rolloutGroup; @Id @ManyToOne(optional = false, targetEntity = JpaTarget.class, fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST }) - @JoinColumn( - name = "target", nullable = false, updatable = false, - foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_rollout_target_group_target")) + @JoinColumn(name = "target", nullable = false, updatable = false) private JpaTarget target; @OneToMany(targetEntity = JpaAction.class, fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST })