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] Problème de suppression


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 1
    Par défaut [Hibernate] Problème de suppression
    Bonjour,

    Je rencontre un petit problème avec Hibernate. En bref, j'ai une classe nommée X, qui est abstraite, et dont héritent trois classes : X1, X2, X3.

    J'ai deux classes Voiture et Maison, qui peuvent contenir un certain nombre de champs de type X. Je ne fais donc pas un mapping avec une simple property.

    Les mappings sont donc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <class name="Voiture" table="VOITURE" lazy="false" abstract="true" mutable="true" polymorphism="implicit" dynamic-update="false" dynamic-insert="false" select-before-update="false" optimistic-lock="version">
       <id name="idHibernate">
          <column name="ID_VOITURE" not-null="true"/>
          <generator class="native" /> 
       </id>
     
       <many-to-one name="_alpha" class="X" unique="true" cascade="all,delete" update="true" insert="true" optimistic-lock="true" not-found="exception" embed-xml="true">
          <column name="FK_ALPHA" not-null="true"/>
       </many-to-one>
     
       <many-to-one name="_beta" class="X" unique="true" cascade="all,delete" update="true" insert="true" optimistic-lock="true" not-found="exception" embed-xml="true">
          <column name="FK_BETA" not-null="true"/>
       </many-to-one>
    </class>
     
    Pour la classe X, j'ai fait un truc tout bête qui me parait bon:
     
    <class name="X" table="X" lazy="false" abstract="true" mutable="true" polymorphism="implicit" dynamic-update="false" dynamic-insert="false" select-before-update="false" optimistic-lock="version">
       <id name="idHibernate">
          <column name="ID_X" not-null="true"/>
          <generator class="native" /> 
       </id>
     
       <joined-subclass name="X1" table="X1" lazy="false" dynamic-update="false" dynamic-insert="false" select-before-update="false">
          <key on-delete="noaction">
             <column name="X_ID_X1"/>
          </key>
     
          <property name="_parametre" unique="false" optimistic-lock="true" lazy="false" generated="never">
             <column name="PARAMETRE" not-null="true"/>
          </property>
      </joined-subclass>
    </class>
    Donc voilà, tout va bien, sauf qu'en Java, je fais la chose suivante :
    - Création d'une voiture, avec _alpha qui est de type X1.
    - Puis je crée un nouvel objet de type X1, et je fais :
    - voiture._alpha = nouvelObjet.

    Hibernate est content, et lorsque je fais un update, il ne crie pas. Seulement voilà, en regardant la base, je m'aperçois qu'il reste un record correspondant à l'ancien objet de type !

    Ma question est donc la suivante : est on obligé d'éviter de construire un nouvel objet, ou y a t il moyen de corriger le problème en changeant mon mapping ?

    D'avance merci =p

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    cascade="delete-orphan" sur la relation voiture -> X permet de forcer hibernate a supprimer le X de la db quand tu le remplace par un autre. Sinon il faudra explicitement faire un delete du X via la session pour effacer de la db.

Discussions similaires

  1. Problème de suppression Hibernate+Struts
    Par sdou9a dans le forum Frameworks Web
    Réponses: 8
    Dernier message: 06/01/2012, 12h09
  2. [Data] [Hibernate] Problème de suppression
    Par iftolotfi dans le forum Spring
    Réponses: 10
    Dernier message: 16/12/2006, 12h05
  3. [JTable] problème après suppression d'une ligne
    Par fredo3500 dans le forum Composants
    Réponses: 7
    Dernier message: 17/03/2005, 10h01
  4. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27
  5. Réponses: 4
    Dernier message: 16/04/2004, 08h20

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