Relations SQL ambigües qui figent l'application
Bonjour à tous :),
J'essaie de faire une application web en utilisant angularjs et Spring (JPA, MVC, BOOT)
J'ai ce MCD :
https://www.dropbox.com/s/depd3oz5kw...nline.png?dl=0
Et ces classes-là :
PROFIL :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| // one PROFIL can have N COMPETENCE_LEVEL
// one PROFIL can have N EXPERIENCE
// one PROFIL can have N POST_LEVEL
@Entity
@Table(name="profil")
public class Profil {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id_profil")
private Long idProfil;
@OneToMany(mappedBy="profil")
private List<CompetenceLevel> competenceLevels;
@OneToMany(mappedBy="profil")
private List<PostLevel> postLevels;
@OneToMany(mappedBy="profil")
private List<Experience> experiences;
// DEFAULT CONSTRUCTOR
// CONSTRUCTOR WITH PARAMETERS
// GETTERS/SETTERS
// NO TO_STRING FOR THE MOMENT...
} |
POST_LEVEL :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| // one POST_LEVEL have one POST
// one POST_LEVEL have one LEVEL
// one POST_LEVEL concern one PROFIL
// one POST_LEVEL can concern N EXPERIENCE
@Entity
@Table(name="post_level")
public class PostLevel {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id_post_level")
private Long idPostLevel;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id_post")
private Post post;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id_level")
private Level level;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id_profil")
private Profil profil;
@OneToMany(mappedBy="postLevel")
private List<Experience> experiences;
// DEFAULT CONSTRUCTOR
// CONSTRUCTOR WITH PARAMETERS
// GETTERS/SETTERS
// NO TO_STRING FOR THE MOMENT...
} |
LEVEL :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| // one LEVEL can concern N COMPETENCE_LEVEL
// one LEVEL can concern N POST_LEVEL
// LEVEL and POST and COMPETENCE are relatively similary.
@Entity
@Table(name="level")
public class Level {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id_level")
private Long idLevel;
@Column(name="level")
private String level;
@OneToMany(mappedBy="level")
private List<CompetenceLevel> competenceLevels;
@OneToMany(mappedBy="level")
private List<PostLevel> postLevels;
// DEFAULT CONSTRUCTOR
// CONSTRUCTOR WITH PARAMETERS
// GETTERS/SETTERS
// NO TO_STRING FOR THE MOMENT...
} |
COMPETENCE_LEVEL :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| // one COMPETENCE_LEVEL concern one PROFIL
// one COMPETENCE_LEVEL have one COMPETENCE
// one COMPETENCE_LEVEL have one LEVEL
// one COMPETENCE_LEVEL can concern N EXPERIENCE
@Entity
@Table(name="competence_level")
public class CompetenceLevel {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id_competence_level")
private Long idCompetenceLevel;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id_competence")
private Competence competence;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id_level")
private Level level;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id_profil")
private Profil profil;
@ManyToMany(mappedBy="competenceLevels")
private List<Experience> experiences;
// DEFAULT CONSTRUCTOR
// CONSTRUCTOR WITH PARAMETERS
// GETTERS/SETTERS
// NO TO_STRING FOR THE MOMENT...
} |
EXPERIENCE :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| // one EXPERIENCE concern one PROFIL
// one EXPERIENCE can have N COMPETENCE_LEVEL
// one EXPERIENCE can have one POST_LEVEL
@Entity
@Table(name="experience")
public class Experience {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id_experience")
private Long idExperience;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id_profil")
private Profil profil;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id_post_level")
private PostLevel postLevel;
@ManyToMany
@JoinTable(name = "experience_competence_level", joinColumns = @JoinColumn(name = "id_experience", referencedColumnName = "id_experience"), inverseJoinColumns = @JoinColumn(name = "id_competence_level", referencedColumnName = "id_competence_level"))
private List<CompetenceLevel> competenceLevels;
// DEFAULT CONSTRUCTOR
// CONSTRUCTOR WITH PARAMETERS
// GETTERS/SETTERS
// NO TO_STRING FOR THE MOMENT...
} |
Mon problème est que lorsque j'ajoute une COMPETENCE_LEVEL dans ma base de données MySQL, l'application se fige lorsque j'essaie de récupérer toutes les COMPETENCE_LEVEL d'un PROFIL. Surement qu'il y a un problème de boucle quelque part mais je ne vois pas où :/ Vous avez une idée ? Merci d'avance ;).