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

Hibernate Java Discussion :

Problème avec table intermédiaire à la place d'une relation ManyToMany


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 145
    Points : 62
    Points
    62
    Par défaut Problème avec table intermédiaire à la place d'une relation ManyToMany
    Bonjour ,
    J'ai deux classes ELEVE et COURS avec des relations (ManyToMany). Ayant besoin d'informations complémentaires dans la table intermediaire, je transforme la relation en (OneToMany-ManyToOne)de la façon suivante:
    ELEVE (id,nom_eleve,cours_eleves<cours_eleve>)1.1--------1.N COURS_ELEVE (id,isObligatoire,eleve,cours) 1.N---------1.1COURS(id,nom_cours,cours_eleves<cours_eleve>)
    Je devrais donc avoir quelque chose de la sorte:

    id | nom_eleve
    1 | nom1
    2 | nom2
    3 | nom3

    id | nom_cours
    1 | cours1
    2 | cours2
    3 | cours3

    id | isObligatoire | eleve_id | cours_id
    1 | true | 1 | 2
    2 | false | 2 | 1
    3 | true | 2 | 3
    4 | true | 3 | 2

    Mon problème est que je ne sais pas comment enregistrer une entrée dans la troisième table en enregistrant un élève ou un cours. c'est une application développée en Java/JPA/Hibernate.
    Je pensais que si j'enregistre un eleve et je lui associe un cours, la 3em table se remplirait automatiquement, mais ce n'est pas le cas. Besoin d'aide.
    Merci

  2. #2
    Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Salut,

    Je suis assez novice en java donc ce que je vais dire doit être confirmé par un membre plus expérimenté.

    Déjà tu veux mapper un ManyToMany en transformant la relation en OneToMany/ManyToOne. Je ne comprends pas trop la raison. Dans le cas d'un OneToMany/ManyToOne il n'y a pas besoin de table de jointure, normalement on ajoute juste la clé étrangère dans la table du côté ManyToOne.

    Dans ton exemple, l'élève n°2 possède deux cours et le cours n°2 possède deux élèves. On est donc bien dans un cas de relation ManyToMany. Je ne suis même pas certain que tu es le droit d'écrire OneToMany sur hibernate et de remplir ta table comme ça (à confirmer).

    Ton véritable problème à ce que j'ai compris c'est que tu veux une table de jointure personnalisée qui en plus des deux clés étrangères possède un attribut de type Booléen. Je ne suis pas moi même familier de ce problème mais je pense que ce tutoriel te seras utile :
    https://www.mkyong.com/hibernate/hib...mn-annotation/


    J'espère t'avoir été utile, bonne chance pour ton code.

  3. #3
    Candidat au Club
    Homme Profil pro
    demandeur d'emploi
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : demandeur d'emploi

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Salut,
    idem que Youyi, débutant également, je dis peut être des bêtises mais pourquoi ne crées tu pas une troisième table (c'est à dire dans ton cas une troisième classe par Exemple: ContrainteCours) si tu as besoin d'information complémentaire, cette classe les prendrait en attribut. Peut être que tu as déjà essayé.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 145
    Points : 62
    Points
    62
    Par défaut
    Déjà tu veux mapper un ManyToMany en transformant la relation en OneToMany/ManyToOne. Je ne comprends pas trop la raison
    Si tu veux que ta table intermédiaire comprenne d'autres attributs que les id de tes deux tables concernés c'est la solution. Et à ce moment cette table tu dois la créer manuellement.

    idem que Youyi, débutant également, je dis peut être des bêtises mais pourquoi ne crées tu pas une troisième table (c'est à dire dans ton cas une troisième classe par Exemple: ContrainteCours) si tu as besoin d'information complémentaire, cette classe les prendrait en attribut. Peut être que tu as déjà essayé.
    C'est ce à quoi sert la table intermédiaire COURS_ELEVE

Discussions similaires

  1. [AC-2003] Problème avec l'ajout d'un champ à une table qui résulte d'une requête
    Par ostrich95 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/03/2014, 19h12
  2. Réponses: 1
    Dernier message: 12/07/2013, 08h32
  3. Requête avec table intermédiaire
    Par jgfa9 dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/03/2007, 18h51
  4. Réponses: 2
    Dernier message: 02/08/2006, 10h25
  5. [Configuration] Problème avec un script de login utilisant une session
    Par HNT dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/09/2005, 19h56

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