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 :

manytomany delete cascade


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 16
    Par défaut manytomany delete cascade
    Bonjour,

    Je possède le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @ManyToMany(cascade = {CascadeType.ALL} , fetch=FetchType.LAZY)
    @JoinTable(name = "T1", joinColumns = @JoinColumn(name = "C1"), inverseJoinColumns = @JoinColumn(name = "C2"))
    private List<AuthorizationUnit> authorizationUnits;
     
    @ManyToMany(cascade = {CascadeType.ALL} , fetch = FetchType.LAZY)
    @JoinTable(name = "T2", joinColumns = @JoinColumn(name = "C3"), inverseJoinColumns = @JoinColumn(name = "C4")) 
    private List<Attachment> attachments;
    J'ai donc deux relations manyToMany. Lors d'un merge de la classe contenant ce mapping, je désirerai avoir deux comportements différents:
    * dans le premier cas, je désirerai que la suppression ne supprime que les entrées dans la table d'association. C'est le comportement actuel.
    * dans le second cas, je désirerai que la suppression supprime à la fois les entrées dans la table d'association et dans la table contenant les Attachments.

    Merci de votre aide,
    Py

  2. #2
    Membre averti
    Inscrit en
    Janvier 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 16
    Par défaut
    En fait, en y réfléchissant cela n'a pas beaucoup de sens de supprimer les orphelins d'une relation n*n. Cela prouve une erreur de conception (il aurait mieux vallu dans ce cas utilisé une relation 1*n).

    Toutefois cela semble fonctionner avec une fonctionnalité propre à hibernate:
    @Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)

    Py

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 20
    Par défaut
    Bonjour,
    pour rebondir sur ce que tu disais, prenons un exemple :

    client 1 - * commande * - * produit

    je désire supprimer un client, j'ai donc mis un cascade="all,delete-orphan" sur le <one-to-many> coté client.
    Cependant, je voudrais aussi que Hibernate me supprime de la table d'association créée par la relation *-* toutes les entrées relatives aux commandes supprimées précédemment sans pour autant supprimer les produits correspondants.
    Quelqu'un a une idée ?
    Merci.

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

Discussions similaires

  1. On Delete Cascade
    Par malbarre dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/07/2006, 11h40
  2. SQL Delete Cascade
    Par mschoum dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/06/2006, 14h18
  3. [SQL 2K5] Pb : ON DELETE CASCADE : référence circulaire
    Par n00bi dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 29/05/2006, 08h48
  4. [SQL2K] delete cascade d'une table sur elle même
    Par StormimOn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/04/2006, 16h28
  5. Delete cascade --> problème de temps de traitement
    Par celine31 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 11/01/2006, 12h03

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