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 :

Many-to-many uni-directionnelle - table lien jamais remplie


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Points : 16
    Points
    16
    Par défaut Many-to-many uni-directionnelle - table lien jamais remplie
    Bonjour,

    n'ayant plus eu l'occasion de travailler avec hibernate depuis un moment je me replonge dedans depuis peu, et tout ne me revient pas.
    Là, je bloque.


    J'ai une relation A - AB - B en many-to-many du coté B.
    Lors de la création de B j'affecte une liste de A et save, tout fonctionne, B et AB sont remplies.

    J'ai également une relation A - AC - C du coté C.
    Pour faire simple, Je créer des occurrences de C sur le modèle de B.
    Pour un B je créer un ou plusieurs C, auxquels j'affecte une liste de A venant de la relation A - AB - B.

    Et quoi que je fasse, la table AC n'est jamais mise à jour.

    Il me semble avoir déjà rencontré ce cas de figure par le passé, mais je ne me rappelle plus comment l'avoir solutionné.

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut

    peux-tu nous faire voir comment tu as crée tes classes?

    eric

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    Bonsoir,

    J'utilise des lettres pour simplifier mon problème et éviter les termes fonctionnels, donc je ne peux pas donner le code directement.

    Mes classes n'ont rien de spécial, j'ai une classe A, une classe B avec un Set<A>, et une classe C avec la même chose.
    Chacun avec son fichier de mapping qui va bien.

    Lors de la création d'un B je n'ai auncun problème, et lors de l'insertion d'un C avec un set<A> récupérés directement en base ça fonctionne.
    Mais pas avec un Set<A> récupéré depuis une classe B.

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    je comprend, peux-tu nous donner schematiquement avec les lettres comment tes table sont crées
    as tu un schema de cette sorte:

    Table A:
    id_a

    Table B
    id_b

    Table AB
    id_a
    id_b

    Table C:
    id_c

    Table AC
    id_a
    id_c

    ?

    Eric

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    Oui, c'est tout à fait ça.

  6. #6
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut ,
    tu dois creer un truc de ce genre:

    dans la classe A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    @ManyToMany
    	@JoinTable(name="ab", joinColumns = { @JoinColumn(name ="a_id", referencedColumnName="a_id") },
    	inverseJoinColumns = { @JoinColumn(name = "b_id", referencedColumnName="b_id")})
    	private List<B> bs;
    et dans la classe B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @ManyToMany(mappedBy="bs")
    	private List<A> as;
    et le meme principe dans la classe C

    eric

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    En fait je n'ai pas mis de collections dans A, et le mapping des relations n'est que dans B et C.

  8. #8
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut,

    Dans A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    @ManyToMany
    	@JoinTable(name="ac", joinColumns = { @JoinColumn(name ="a_id", referencedColumnName="a_id") },
    	inverseJoinColumns = { @JoinColumn(name = "c_id", referencedColumnName="c_id")})
    	private List<C> cs;
    Dans C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     @ManyToMany(mappedBy="cs")
      private List<A> as;
    Pour que cela puisse bien marcher.

    Eric

Discussions similaires

  1. [1.x] Relation Many to Many et colonnes dans la table association
    Par PeytaWodka dans le forum Symfony
    Réponses: 11
    Dernier message: 16/05/2011, 10h26
  2. Réponses: 14
    Dernier message: 22/03/2011, 15h01
  3. Un peu de mal a comprendre le concepte "one-to-many" et "many-to-many"
    Par chriscoolletoubibe dans le forum Hibernate
    Réponses: 4
    Dernier message: 29/03/2007, 18h50
  4. Réponses: 3
    Dernier message: 26/02/2007, 10h14
  5. Réponses: 2
    Dernier message: 29/08/2006, 10h40

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