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

JPA Java Discussion :

[JPA] Problème @OneToMany unidirectionnel


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Par défaut [JPA] Problème @OneToMany unidirectionnel
    Bonjour,

    voici mes 2 tables :

    Table commentaire

    id_commentaire
    libelle_commentaire
    description_commentaire

    Table note

    id_note
    id_commentaire
    note

    Au niveau des classes métiers :

    -j'ai une classe commentaire qui a 4 membres id_commentaire,libelle_commentaire, description_commentaire et une Collection de notes.
    -j'ai une classe note qui a 2 membres id_note et la note.

    J'ai mis un OneToMany sur la collection de note comme ceci :

    40 @OneToMany(targetEntity=Note.class,cascade=CascadeType.ALL)
    41 @JoinTable(
    42 name="note",
    43 joinColumns=@JoinColumn(name="ID_COMMENTAIRE"),
    44 inverseJoinColumns=@JoinColumn(name="ID_NOTE")
    45 )

    J'arrive récupérer les commentaires avec leurs notes, par contre lorsque je fais un ajout avec un persist d'un commentaire, il n'ajoute pas ces notes. (uniquement les commentaires)

    Pouvez-vous m'aider?? Il faut absolument que ça respecte le modèle de table ci-dessus et je ne souhaite pas faire un @ManyToOne dans l'autre sens car je ne souhaite pas avoir de bidirection entre les 2 classes.

    Je vous remercie.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    est-ce que vous faites bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    newNote.setCommentaire(ownerCommentaire)
    (ou équivalent) quelque part ?

    (faire "ownerCommentaire.collectionOfNotes.add(newNote)" ne suffit pas…)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Par défaut
    ben en faite dans ma classe note, je n'ai pas d'objet commentaire donc je peux pas faire :
    newNote.setCommentaire(ownerCommentaire)
    Moi je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Commentaire c=new Commentaire();
    c.setLibelleCommentaire("..");
    c.setDescriptionCommentaire("..");
    Note n=new Note();
    n.setNote(10);
    Note n2=new Note();
    n2.setNote(12);
    Vector<Note> notes=new Vector<Note>();
    notes.add(n1);
    notes.add(n2);
    puis un em.persist(c);
    Lorsque je fais ceci, il me persiste uniquement le commentaire. Comment faire?
    Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    votre commentaire ne contient aucune note si vous créez un Vector que vous assignez à une variable locale…
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    c.notes = new Vector<Note>();
    c.notes.add(n1) ;
    c.notes.add(n2) ;
    (l'idéal étant d'avoir un addNote(Note inNote) comme méthode de Commentaire…)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 189
    Par défaut
    excusez moi, dans le code précédent que j'ai donné, j'ai oublié de mettre l'assignation du vecteur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Commentaire c=new Commentaire();
    c.setLibelleCommentaire("..");
    c.setDescriptionCommentaire("..");
    Note n=new Note();
    n.setNote(10);
    Note n2=new Note();
    n2.setNote(12);
    Vector<Note> notes=new Vector<Note>();
    notes.add(n1);
    notes.add(n2);
    c.setNotes(notes);
    puis un em.persist(c);
    j'ai tout essayé, mais je n'arrive pas à faire persister les notes. je ne comprends pas...

    Quand je vois ce qui se passe dans la console, je vois des insert pour dans la table commentaire et rien dans la table note...

    merci de votre aide

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par Alain15 Voir le message
    excusez moi, dans le code précédent que j'ai donné, j'ai oublié de mettre l'assignation du vecteur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Commentaire c=new Commentaire();
    c.setLibelleCommentaire("..");
    c.setDescriptionCommentaire("..");
    Note n=new Note();
    n.setNote(10);
    Note n2=new Note();
    n2.setNote(12);
    Vector<Note> notes=new Vector<Note>();
    notes.add(n1);
    notes.add(n2);
    c.setNotes(notes);
    puis un em.persist(c);
    j'ai tout essayé, mais je n'arrive pas à faire persister les notes. je ne comprends pas...

    Quand je vois ce qui se passe dans la console, je vois des insert pour dans la table commentaire et rien dans la table note...

    merci de votre aide
    la façon dont vous déclarez le @OneToMany correspond à l'usage d'une table intermédiaire or vous spécifiez comme joinTable la table "note"…

    regardez les exemples :

    http://wiki.caucho.com/Amber:_Relation_catalog

Discussions similaires

  1. @OneToMany unidirectionnelle Problème
    Par Aymanus dans le forum JPA
    Réponses: 3
    Dernier message: 18/05/2011, 12h06
  2. Jpa problème selection
    Par salivie dans le forum JPA
    Réponses: 3
    Dernier message: 28/07/2010, 18h33
  3. Réponses: 7
    Dernier message: 25/05/2010, 17h32
  4. JPA : problème ManyToMany
    Par tmanta7 dans le forum JPA
    Réponses: 10
    Dernier message: 05/04/2010, 18h52
  5. Quid du @OneToMany unidirectionnel
    Par Arnaud F. dans le forum JPA
    Réponses: 5
    Dernier message: 08/05/2009, 23h50

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