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 sur la modification de plusieurs collections.


Sujet :

Hibernate Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Problème sur la modification de plusieurs collections.
    Bonjour ,

    j'ai un problème de sauvegarde sur plusieurs objets liés entre eux.
    A la base j'ai deux types d'objets A et B, avec un objet LienAB qui pointe sur les deux autres avec des relations one-to-many.

    Au démarrage j'ai :
    a1 -> lien1 <- b1
    a2 -> lien2 <- b1

    Mon action porte sur la modification de lien1, or selon les règles de l'appli elle entraine aussi :
    - une modification des autres liens liés à B, donc ici lien2
    - une création de lien3 entre a2 et b1 à partir du lien2 existant déjà

    Au niveau de mes objets, je fais donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    lien1.modification();
    Set autresLiens = lien1.getB().getListeAutresLiens;
    while(autresLiens ) {
       LienAB autreLien = autresLiens.next();
     
       LienAB nouveauLien = autreLien.clone();
       nouveauLien modification();
       autresLiens.add(nouveauLien);
     
       autreLien modification();
    }
    flush();
    En faisant ça, j'ai des update sur a1 et lien1, mais rien de plus. Or il me faudrait aussi un update sur lien2 et un insert sur lien3.

    Les objets sont tous en sessions. Si je force la sauvegarde via la méthode saveOrUpdate sur a2, j'obtiens une Exception : org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session sur l'objet de type A.

    J'ai déjà vérifié la méthode equals, elle est correctement implémentée.

    Hibernate est il bien adapté pour ces cas tordus ?

  2. #2
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    C'est bon j'ai trouvé la réponse.

    En fait, mon objet A était chargé dans une session précédente (action d'affichage), puis réintégré dans celle-ci (action d'enregistrement) avec la méthode update de la DAO. Il semble que les informations sur les objets liés ne soient pas correctement transportés lors d'un détachement puis d'un rattachement....

    En tout cas, si je charge préalablement l'objet et que je le sauvegarde avec toutes les modifications des liens dans la même session Hibernate, ça fonctionne très bien.

Discussions similaires

  1. [AC-2010] Problème sur un formulaire associant plusieurs tables
    Par Morgane29 dans le forum IHM
    Réponses: 0
    Dernier message: 02/07/2012, 15h25
  2. Réponses: 21
    Dernier message: 21/02/2008, 15h50
  3. Problème sur modification de requête
    Par deglingo37 dans le forum Access
    Réponses: 2
    Dernier message: 06/09/2006, 16h33
  4. problème sur un formulaire de modification
    Par puppusse79 dans le forum Access
    Réponses: 13
    Dernier message: 14/04/2006, 15h48
  5. Problème sur la modification d'un contrôle
    Par auriolbeach dans le forum Access
    Réponses: 8
    Dernier message: 30/01/2006, 18h40

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