Remove schema generation related annotations in Jpa layer (#2837)

* Remove schema generation related annotations in Jpa layer

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* 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 <Stanislav.Trailov@bosch.io>

* remove missed foreign key annotations

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* foreign key from autoConfirmation

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

---------

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Stanislav Trailov
2025-12-08 09:26:35 +02:00
committed by GitHub
parent 5c6718995b
commit e6367d0b0c
19 changed files with 53 additions and 210 deletions

View File

@@ -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

View File

@@ -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.

View File

@@ -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<String> messages;

View File

@@ -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)

View File

@@ -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)

View File

@@ -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<SoftwareModule> 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<DistributionSetTag> 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<String, String> metadata = new HashMap<>();

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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

View File

@@ -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<String, JpaMetadataValue> metadata;

View File

@@ -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 {

View File

@@ -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<TargetTag> 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<String, String> 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<String, String> metadata;

View File

@@ -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")

View File

@@ -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

View File

@@ -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<DistributionSetType> distributionSetTypes = new HashSet<>();
public JpaTargetType(final String key, final String name, final String description, final String colour) {

View File

@@ -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 {

View File

@@ -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) {

View File

@@ -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 })