Erreur Hibernate : lors de la suppression

Erreur Hibernate : lors de la suppression - Java - Programmation

Marsh Posté le 02-02-2005 à 09:51:40    

Bonjour,
 
J'ai un problème avec Hibernate, lorsque je veux supprimer un objet avec des associations, il ne veut pas me le supprimer et il lance cette exception : net.sf.hibernate.ObjectDeletedException : deleted object would be re-saved by cascade (remove deleted object from associations): 34, pack.Reservation
 
voila ce qui a dans mes fichiers de mapping :  
 
un objet Pret :  
 
<class name="pack.Pret" table="pret">
     
     <id name="pretID" column="pret_id" unsaved-value="null">
            <generator class="native"/>
        </id>
        <property name="title" column="title"/>
 
        <set name="reservations" lazy="false" table="reservation"
                             cascade="all-delete-orphan">
     <key column="pret_id"/>
            <one-to-many class="pack.Reservation" />
 </set>
 
    </class>
 
 
et l'objet reservation
 
<hibernate-mapping>
    <class name="pack.Reservation" table="reservation">  
        <id name="reservationID" column="reservation_id" unsaved-value="null">
            <generator class="native"/>
        </id>
       <property name="comment"/>
       <property name="pretID" column="pret_id"/>
       <many-to-one name="materiel" cascade="none" class="pack.Materiel" column="materiel_id" />
    </class>
</hibernate-mapping>
 
 
lors de mes tests, il se trouve que lorsque je supprime la ligne : <many-to-one name="materiel" cascade="none" class="pack.Materiel" column="materiel_id" />, la suppression de l'objet Pret s'effectue, en supprimant bien toutes les reservations associées, visiblement le lien entre une réservation et un matériel bloque la suppression.
 
 
Ce problème me bloque vraiment, si quelqu'un a une idée, je lui en serait très reconnaissant, Merci.

Reply

Marsh Posté le 02-02-2005 à 09:51:40   

Reply

Marsh Posté le 02-02-2005 à 11:04:35    

Salut,
 
Tu fais peur quand tu dis

aphenomeb a écrit :

lorsque je supprime la ligne : <many-to-one name="materiel" cascade="none" class="pack.Materiel" column="materiel_id" />


... alors je me permet de te demander si tu sais de quoi tu parles ou si t'y vas au hasard?
 
Sinon, suivant le résultat que tu veux, à mon avis tu dois specifier un type de cascade sur pret->materiel ? Je maitrise pas à fond les relations avec hibernate donc je peux pas t'en dire plus sans aller lire la doc a ta place [:icon12]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-02-2005 à 11:22:45    

en fait, j'ai juste besoin de récuperer un materiel qui est associé à une reservation, il ne faut pas que celui-ci soit supprimé si la reservation est supprimée avec la fiche de prêt, donc le cascade doit être bien mis à none. Concernant la doc, j'ai cherché mais g pas trouvé un cas similaire, même ds le bouquin "hibernate in action" et dans le doc sur le site d'hibernate et est-ce que je sais de quoi je parle, je crois que oui, faits moi confiance ;-)

Reply

Marsh Posté le 02-02-2005 à 11:24:24    

oui, cascade à none pour materiel->pret, mais dans l'autre sens de la relation tu dois pas le spécifier aussi? (je suis pas sur du comportement par défaut?)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-02-2005 à 11:33:33    

the real moins moins a écrit :

oui, cascade à none pour materiel->pret, mais dans l'autre sens de la relation tu dois pas le spécifier aussi? (je suis pas sur du comportement par défaut?)


 
 
pour le materiel g ça
 
<class name="pack.Material" table="material">
  <id name="materialID" column="material_id" unsaved-value="null">
   <generator class="native"/>
  </id>
  <property name="comment"/>
                 <property name="name"/>
  <set name="reservations" table="reservation"  lazy="false" cascade="all">
   <key column="material_id"/>
   <one-to-many class="pack.Reservation" />
  </set>
               ...
 
ça marche nickel, lorsque je veux supprimer une reservation d'un materiel.
 
en fait un materiel n'est pas lié directement à une fiche de prêt, il est lié par le biais d'une reservation, en fait un materiel peut avoir plusieurs reservations, c'est pour cela qu'il ne faut pas qu'il soit supprimé si on supprime un pret avec des reservation.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed