Feat: fin de JPA

This commit is contained in:
Amaël Kesteman
2026-01-05 13:25:21 +01:00
parent 995753d026
commit 94dbc95437
5 changed files with 80 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ package hackathon.FrisbYEE.jpa.metier;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.OneToOne;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@@ -20,6 +21,9 @@ public class Admin {
private Long id;
private String name;
@OneToOne(mappedBy = "admin")
private User user;
public Admin(String name){
this.name = name;
}

View File

@@ -3,6 +3,7 @@ package hackathon.FrisbYEE.jpa.metier;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.OneToOne;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@@ -32,6 +33,9 @@ public class Athlete {
@ManyToMany(mappedBy = "athletes")
private List<Session> sessions = new ArrayList<>(); // plusieurs sessions sont possibles
@OneToOne(mappedBy = "athlete")
private User user;
public Athlete(String name){
this.name = name;
}

View File

@@ -3,6 +3,7 @@ package hackathon.FrisbYEE.jpa.metier;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.persistence.OneToOne;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@@ -26,6 +27,9 @@ public class Coach {
@OneToMany(mappedBy = "coach")
private List<Session> sessions = new ArrayList<>(); // Un coach peut avoir plusieurs sessions
@OneToOne(mappedBy = "coach")
private User user;
public Coach(String name){
this.name = name;
}

View File

@@ -0,0 +1,7 @@
package hackathon.FrisbYEE.jpa.metier;
public enum Role {
ADMIN,
COACH,
ATHLETE
}

View File

@@ -0,0 +1,61 @@
package hackathon.FrisbYEE.jpa.metier;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.OneToOne;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import jakarta.persistence.Access;
import jakarta.persistence.AccessType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.CascadeType;
@Entity
@Getter @Setter @NoArgsConstructor
@Access(AccessType.FIELD)
public class User implements Serializable {
@Id
@GeneratedValue
private Long id;
@Column(unique = true, nullable = false) //pas possible d'avoir le même nom
private String name;
@Column (nullable = false)
private String motDePasse;
private String email;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private Role role;
@OneToOne(cascade = CascadeType.ALL)
private Coach coach;
@OneToOne(cascade = CascadeType.ALL)
private Athlete athlete;
@OneToOne(cascade = CascadeType.ALL)
private Admin admin;
public User(String name) {
this.name = name;
}
public User(String name, String motDePasse, String email, Role role) {
this.name = name;
this.motDePasse = motDePasse;
this.email = email;
this.role = role;
}
@Override
public String toString() {
return "User [id=" + id + " , name=" + name + "]";
}
}