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

Persistance des données Java Discussion :

Problème de suppression d'entités parmi une collection


Sujet :

Persistance des données Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut Problème de suppression d'entités parmi une collection
    Bonjour,

    J'ai une entité A qui a une relation oneToMany vers une collection d'entité B.

    Je dois supprimer tous les B de A entre deux dates (donc pas forcément tous les B de A) et ensuite ajouter d'autres B dans A.

    Pour supprimer, j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bDao.deleteAll(bDao.findFor(a, date1, date2));
    et puis pour ajouter les autres b, j'ai fait (en gros) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for (B b: listedeB) {
       b.attache(a);
       a.ajoute(b);
    }
     
    aDao.merge(a);
    Problème, quand je merge mon a, les b sont cascadés, alors qu'ils ont été supprimés, j'obtiens donc des exceptions.

    Je ne peux pas retirer la cascade Merge, je m'en sers.

    Je ne me sens pas de charger tous les B de a puis de faire un delete sur chaque entre les deux dates, il y en a potentiellement un sacré paquet.

    Du coup, je suis un peu embeté.

    Une idée quelqu'un ?

    Est ce que je peux ajouter les b sans faire un merge sur le a ? Genre bDao.addAll(blist); ? Est ce que ça risque pas de faire le merge sur le a en fin de session de toute façon ?

    Merci d'avance.
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut
    Ok, donc le problème c'était que je ne cassais pas les liens a/b

    La solution :

    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bDao.deleteAll(bDao.findFor(a, date1, date2));
    Faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (B b : bDao.findFor(a, date1, date2)) {
      a.enleverB(b);
      b.setA(null);
      bDao.removeOne(b);
    }
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

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

Discussions similaires

  1. Problème de suppression du code dans une feuille
    Par Denis_67 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/05/2011, 20h50
  2. [VB.NET] Suppression d'objets dans une collection
    Par master56 dans le forum VB.NET
    Réponses: 7
    Dernier message: 03/06/2010, 21h46
  3. Suppression de doublons dans une collection
    Par ram-0000 dans le forum C++
    Réponses: 7
    Dernier message: 21/03/2009, 23h48
  4. Réponses: 5
    Dernier message: 11/06/2007, 13h23
  5. Hibernate + suppression d'objets dans une collection
    Par Saiyan54 dans le forum Hibernate
    Réponses: 2
    Dernier message: 15/12/2006, 15h39

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