Premieres corrections en utilisant les annotations lombock

This commit is contained in:
vincentRamiere 2025-05-24 12:10:59 +02:00
parent 7d20b28544
commit 95b967e682
3 changed files with 64 additions and 67 deletions

14
pom.xml
View file

@ -70,10 +70,16 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.12.2</version>
<scope>test</scope>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.12.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.38</version>
<scope>provided</scope>
</dependency>
</dependencies>

View file

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

View file

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