Bonjour,

J'aimerais savoir si quelqu'un peut m'aider pour résoudre le problème suivant:

Dans une application, je doit permettre à un utilisateur de créer des vues sur un tableau en lui permettant de regrouper des entités (ici projets).

J'ai utilisé 3 Classes:
ViewVO : définit une vue utilisateur
GroupVO : définit un regroupement de ProjectVO
ProjectVO : l'entité en question

J'ai donc les mappings suivants:

La première classe ViewVO:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<class name="EJL.ORM.Entity.ViewVO, ORM" table="VIEW" >
    <id name="id" access="field" column="ID" type="System.Int32" unsaved-value="0">
      <generator class="native"/>
    </id>
    <property name="label" column="LABEL" access="field" not-null="true" type="System.String"  length="250" insert="true" update="true"/>
    <bag name="groupList" access="field" lazy="false" table="ASSO_GROUP_VIEW" cascade="all">
      <key column="VIEW_ID"/>
      <many-to-many column="GROUP_ID"
         class="EJL.ORM.Entity.GroupVO, ORM"/>
    </bag>
</class>
On remarque donc que j'ai utilisé une association many-to-many pour lister les groupes d'une vue.

La deuxième classe GroupVO:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<class name="EJL.ORM.Entity.GroupVO, ORM" table="GROUP" >
    <id name="id" access="field" column="ID" type="System.Int32" unsaved-value="0">
      <generator class="native"/>
    </id>
    <property name="label" column="LABEL" access="field" not-null="true" type="System.String"  length="250" insert="true" update="true"/>
    <bag name="projectList" access="field" lazy="false" cascade="all" table="ASSO_PROJECT_GROUP">
      <key column="GROUP_ID"/>
      <many-to-many column="PROJECT_ID"
         class="EJL.ORM.Entity.ProjectVO, ORM"/>
    </bag>
  </class>
Les méthodes NHibernate Save et Update appelées qur ViewVO fonctionne à merveilles.
Par contre, cela se complique pour la suppression d'une vue. En effet, lorsque je tente de supprimer une vue, le SGBD lève une Exception de violation de contrainte d'intégrité par rapport à la table Project. En même temps, c'est tout à fait logique dans le mesure où Project est référencé par une d'autres tables dans la base de données.
Du coup, j'aimerais savoir s'il est possible de préciser dans le mapping NHibernate de supprimer uniquement les enregistrements de la table d'association mais pas les entités Project?

Merci pour votre aide.
Jonathan.