diff --git a/pom.xml b/pom.xml index 4510867..24a4c4a 100644 --- a/pom.xml +++ b/pom.xml @@ -70,10 +70,16 @@ test - org.junit.jupiter - junit-jupiter-api - 5.12.2 - test + org.junit.jupiter + junit-jupiter-api + 5.12.2 + test + + + org.projectlombok + lombok + 1.18.38 + provided diff --git a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Preference.java b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Preference.java index d64b964..acc1190 100644 --- a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Preference.java +++ b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/Preference.java @@ -4,49 +4,43 @@ import jakarta.persistence.Column; import jakarta.persistence.EmbeddedId; import jakarta.persistence.Entity; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +/** + * Entité représentant les préférences d'un utilisateur (Personne) pour un restaurant (Restaurant). + * Utilise une clé primaire composite {@link PreferencePK}. + */ @Entity +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor public class Preference { + // Clé primaire composite, intégrée directement dans cette entité. + @EmbeddedId private PreferencePK preferencePK; - private int note; + + // Note attribuée par l'utilisateur au restaurant. Peut être nulle. + // Le type Integer est utilisé pour permettre la nullité (non noté). + @Column // Par défaut, nullable = true pour Integer + private Integer note; + + // Indique si le restaurant est marqué comme favori par l'utilisateur. + // boolean primitif, donc non nullable par défaut en base (false si non spécifié). + @Column private boolean favoris; - public Preference() { - super(); - } - + /** + * Constructeur partiel pour initialiser avec la clé primaire. + * Ce constructeur est conservé car @AllArgsConstructor ne couvre pas ce cas spécifique + * si vous souhaitez initialiser uniquement avec la clé. + * Si @AllArgsConstructor suffit, vous pouvez supprimer celui-ci. + */ public Preference(PreferencePK preferencePK){ - super(); this.preferencePK = preferencePK; } - - public Preference(PreferencePK preferencePK, int note, boolean favoris) { - super(); - this.preferencePK = preferencePK; - this.note = note; - this.favoris = favoris; - } - - @EmbeddedId - public PreferencePK getPreferencePK() { - return preferencePK; - } - public void setPreferencePK(PreferencePK preferencePK) { - this.preferencePK = preferencePK; - } - @Column(nullable = true) - public int getNote() { - return note; - } - public void setNote(int note) { - this.note = note; - } - @Column(nullable = true) - public boolean isFavori() { - return favoris; - } - public void setFavori(boolean favoris) { - this.favoris = favoris; - } - } \ No newline at end of file diff --git a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/PreferencePK.java b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/PreferencePK.java index 42530c2..e05b4a4 100644 --- a/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/PreferencePK.java +++ b/src/main/java/fr/vincent/ramiere/mangerautourdesimplonback/models/PreferencePK.java @@ -1,47 +1,44 @@ package fr.vincent.ramiere.mangerautourdesimplonback.models; import java.io.Serializable; +import java.util.Objects; import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import jakarta.persistence.Embeddable; import jakarta.persistence.ManyToOne; import jakarta.persistence.PrimaryKeyJoinColumn; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +/** + * Classe représentant la clé primaire composite pour l'entité {@link Preference}. + * Elle est composée d'une référence à une {@link Personne} et à un {@link Restaurant}. + * Cette classe doit implémenter {@link Serializable} et redéfinir {@code equals()} et {@code hashCode()}. + */ +@Embeddable +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode public class PreferencePK implements Serializable { private static final long serialVersionUID = 1L; - private Personne personne; - private Restaurant restau; - - public PreferencePK() { - super(); - } - - public PreferencePK(Personne personne, Restaurant restau) { - super(); - this.personne = personne; - this.restau = restau; - } + // Clé étrangère vers l'entité Personne @ManyToOne @PrimaryKeyJoinColumn(name = "personne_id", referencedColumnName = "id_personne") - @JsonBackReference("personne") - public Personne getPersonne() { - return personne; - } - - public void setPersonne(Personne personne) { - this.personne = personne; - } + @JsonBackReference("personne-preferencepk") + private Personne personne; + // Clé étrangère vers l'entité Restaurant @ManyToOne @PrimaryKeyJoinColumn(name="id_restau",referencedColumnName ="id_restau" ) @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) - public Restaurant getRestau() { - return restau; - } - - public void setRestau(Restaurant restau) { - this.restau = restau; - } + private Restaurant restau; }