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