IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Relations SQL ambigües qui figent l'application


Sujet :

Spring Java

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 .

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    J'ai essayer aussi avec JsonIgnore, JsonManagedError etc... Y'a rien qui fonctionne :'(

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Est-ce qu'il y a des boucles dans ton modèle de données?genre on peux aller de compétence => competence+level => retour à compétence. Les données que tu transforme un JSON doivent former un graphe acyclique, JSON n'ayant pas de notion de référence, chaque élément doit être sérialisé à chaque fois qu'il est rencontré.

    Tu ferais mieux de transférer d'abord tes données dans des DTO destinés à JSON plutot que d'essayer de JSONiser tes entités directement.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut
    Salut.
    Et si tu mets la stacktrace de ton erreur ainsi que la(les) requête(s) que t'as essayé.Au passage si t'es en persistance il faut avoir l'habitude de sérialiser tes entités.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    Merci pour vos réponses . Finalement, avec des @JsonIgnore sur les bons champs (les OneToMany), le problème ne se présente plus (oui, c'était cyclique dans le graphe). Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PL/SQL] requete qui marche mais pas dans un cursor
    Par victor.ward dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/09/2005, 22h21
  2. Fenetre qui ferme l'application
    Par pitistef dans le forum MFC
    Réponses: 3
    Dernier message: 04/09/2005, 19h00
  3. [PL/SQL] FUNCTION qui renvoie un ensemble :D
    Par guillaume_pfr dans le forum Oracle
    Réponses: 4
    Dernier message: 27/07/2005, 18h05
  4. [PL/SQL]Procédure qui ne se finit pas...
    Par tscoops dans le forum Oracle
    Réponses: 8
    Dernier message: 13/12/2004, 15h53
  5. [PL/SQL] Fonction qui retourne plusieurs valeurs
    Par Loko dans le forum Oracle
    Réponses: 2
    Dernier message: 07/12/2004, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo