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] delete sur un many-to-many


Sujet :

Hibernate Java

Vue hybride

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

    Informations forums :
    Inscription : Août 2005
    Messages : 113
    Par défaut [Hibernate] delete sur un many-to-many
    Salut,

    J'ai un probleme avec l'utilisation d'Hibernate.J'ai une relation N-N unidirectionnelle entre des Users et des Roles que je map ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <class name="User" table="jg_user">
    <id name="id">
    <column name="id" />
    <generator class="hilo" />
    </id>
    <bag name="roles" table="jg_user_role" lazy="false" cascade="all">
    <key column="user_id"/>
    <many-to-many column="role_id" class="Role" />
    </bag>
    </class>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <class name="Role" table="jg_role">
    <id name="id">
    <column name="id" />
    <generator class="hilo" />
    </id>
    <property name="libelle" column="name" not-null="true"/>
    <property name="applicationName" column="application_name" not-null="true"/>
    </class>
    Hibernate me crée donc trois tables : une pour les Users, une pour les Roles et une table intermédiaire avec deux clés étrangères vers les premières tables.

    Le probleme que je rencontre est lors de la suppression d'un role. Comment supprimer également en cascade toutes les relations User-Role dans la table intermédiaire ? En effet, actuellement, si je supprime un role, j'ai une erreur due à ma contrainte d'intégrité sur ma table intermédiaire.

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Par défaut
    Bonjour,

    il faut explicitement supprimer les relations (depuis Hibernate 3).

    user1 est l'utilisateur du rôle à supprimer
    role1 est le role à supprimer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Session session = HibernateUtil.currentSession();
    Transaction tx = session.beginTransaction();
    user1.getRoles().remove(role1);
    session.save(user1);
    session.delete(role1);
    tx.commit();

Discussions similaires

  1. Hibernate Update sous sélection sur Many-to-many
    Par chang_koukaii dans le forum Hibernate
    Réponses: 0
    Dernier message: 06/12/2007, 12h19
  2. Probleme delete hibernate many-to-many
    Par imanoual dans le forum Hibernate
    Réponses: 1
    Dernier message: 21/10/2007, 20h56
  3. Un peu de mal a comprendre le concepte "one-to-many" et "many-to-many"
    Par chriscoolletoubibe dans le forum Hibernate
    Réponses: 4
    Dernier message: 29/03/2007, 18h50
  4. Réponses: 1
    Dernier message: 03/12/2006, 20h56
  5. Hibernate : suppression sur relation many to one
    Par taf dans le forum Hibernate
    Réponses: 1
    Dernier message: 23/05/2006, 13h08

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