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 :

[hibernate] suppression d'orphelins


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut [hibernate] suppression d'orphelins
    Bonjour, je suis confronté à une petite difficulté et je voudrais savoir si certain parmis vous avais trouver une solution à ce problème.

    J'ai, par exemple, une classe Facture et une relation one-to-many sur LigneFacture maintenue par un Set dans facture.

    Dans ma classe facture j'ai bien la méthode removeLigneFacture suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void removeLigneFacture(LigneFacture lf) {
      lignesFacture.remove(lf);
      lf.setFacture(null);
    }
    Ainsi je m'assure de détacher la dépendance de ma ligne à la facture en plus de la sortir de la collection.

    Mon souci est que cette facture est initialement lue par hibernate mais ensuite détachée du cache et recomposée. Du coup, quand je fais un store sur ma facture il ne retrouve pas son petit avec la ligne de détail que j'ai supprimer de la liste et hibernate de déclenche pas de delete sur l'orphelin.
    Si ma ligne de facture reste dans le cache d'hibernate, il détecte qu'elle est orpheline et fais bien un delete en base !

    Si vous avez une solution, je suis preneur car je ne trouve pas de mon coté.

    Merci beaucoup

  2. #2
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Par défaut
    Je n'ai pas bien compris ton pb mais le plus simple que tu puisse faire c supprimer uniquement ligneFacture et pas remover l'element dans facture
    d'ailleurs j'ai jamais essayer de supprimer un element du set directement
    j'ai tous simplement supprimer l'element de l'autre cote de la relation

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    Ce n'est pas possible car je n'ai pas 1 DAO par table, mais 1 par modèle et que, dans mon cas, je travaille sur le modle Facture comprenant Facture -* LigneFacture + quelques références comme client, produit, etc...

  4. #4
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Par défaut
    a partir de facture tu peux pas recuperer ligneFacture et le supprimer

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    Mon objet facture est "déconnecté" d'hibernate.
    La modification se fait sur l'enregistrement de la facture et non lors de l'ajout ou la suppression d'une ligne de facture. L'utilisateur as ainsi toutes possibilités d'annulation.
    Une fois la ligne détachée de la facture, je n'ai pas la possibilité de la récupérer non, elle est passée au GB normalement

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    En fait, pour être plus clair, tant que je manipule des Proxy hibernate sur mes objets, tout fonctionne bien.

    Quand je change les instances des objets, tout fonctionne aussi sauf pour les cascade delete.

  7. #7
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Par défaut
    quel est l'erreur qu'il te sort qd tu supprimer ??

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    Mais y'as pas d'erreur, les objets ne sont plus managés par Hibernate donc, il ne les supprimes plus, la close cascade="all-delete-orphan" deviens inutile...

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    Idéalement, c'est la méthode lock qu'il me faudrais, mais sur un objet modifié

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/06/2007, 08h30
  2. Hibernate + suppression d'objets dans une collection
    Par Saiyan54 dans le forum Hibernate
    Réponses: 2
    Dernier message: 15/12/2006, 15h39
  3. [Hibernate] Suppression d'un element d'une collection
    Par K-Kaï dans le forum Hibernate
    Réponses: 8
    Dernier message: 31/05/2006, 15h15
  4. Hibernate : suppression sur relation many to one
    Par taf dans le forum Hibernate
    Réponses: 1
    Dernier message: 23/05/2006, 13h08
  5. Réponses: 3
    Dernier message: 19/05/2006, 20h38

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