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 :

Problème de delete sur one-to-many avec une cascade


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2003
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 47
    Points : 52
    Points
    52
    Par défaut Problème de delete sur one-to-many avec une cascade
    Bonjour,

    J'ai une base Oracle que je ne peux modifier au niveau de sa structure.

    J'ai une table parent avec X tables filles.

    Le mapping de la table DAVES est du type :

    <set name = "davcds" inverse="true" cascade="delete-orphan">
    <key column="DAVES_ID" on-delete="cascade"/>
    <one-to-many class="com.ent.prj.persistence.domain.apv.Davcd"/>
    </set>

    Lorsque j'attaque le delete par le bean (ie : je charge le bean puis je demande son effacement) cela fonctionne.

    Si je fais une requête HQL du type :

    Delete from Daves where id = ?, en passant l'id que je veux effacer, j'ai un problème de violation de contrainte de FK sur davcd.

    Je pensais que le HQL utilisait le mapping de la même façon que le 'requêtage' par les bean.

    Qu'en est-il réellement? Où est-ce que je me suis trompé?

    Merci d'avance pour les infos que vous pourriez m'apporter.

    Nicolas

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Est ce que vous avez essayé d'écrire: cascade="delete-All-orphan"?
    ou bien: cacade="delete"?

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Salut, je ne sais pas si ton problème est tjrs d'actualité vu le temps écoulé, mais quand tu dis ne pas pouvoir changer la structure de la base, est ce juste au niveau des relation ou en est il de même pour les contraintes ?
    Car il me semble qu'il faudrait que tu ajoute le on-delete cascade sur ta foreignKey en base de donnée. La raison pour laquelle cela se passe bien lorsque tu charge l'objet c'est que les contraintes delete-cascade du mapping sont la pour dire a hibernate comment gérer les suppression des objet en mémoire, or, lors d'une requete HQL, hibernate ne le charge pas, ou plutot il ne prend que les id de l'objets le reste sera charger en lazy si jamais on y accède, or là ce n'est pas le cas, et n'ayant donc pas en mémoire les éléments de ta collection il n'effectue pas les deletes qui vont bien dessus.

    Donc à mon sens (je suis loin d'être un expert, je passais sur le fofo pour un de mes problèmes avant de tomber sur ton poste ) soit tu charges ton objet (soit (pas sur que ca marche) tu rajoutes clause where toujours vrai dans ton delete qui forcera H à charger ta collection du genre davcds.dave.id >0 comme ca il ne chargera rien des données de DAVE à part son Id et ce quelque soit ta politique de lazy loading) soit tu ajoute la contrainte on-delete sur ta foreign key en DBB et c'est oracle qui fera le reste comme un grand, meme si hibernate ne supprime pas explicitement les données filles.

    Voili, voilou,

    Esperant t'avoir aider et si je me fourvoie complètement n'hesitez pas a corriger mes inepties.

Discussions similaires

  1. requete hql sur association one to many avec inner class
    Par austin P. dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/06/2007, 11h56
  2. Problème d'espace sur IE menu vertical avec image de fond
    Par dom dom from the dom dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 09/03/2007, 11h30
  3. Réponses: 2
    Dernier message: 30/11/2006, 10h22
  4. Réponses: 2
    Dernier message: 10/07/2006, 11h08
  5. [hibernate] relation one-to-many avec plusieurs clés
    Par seb_fou dans le forum Hibernate
    Réponses: 6
    Dernier message: 16/03/2006, 14h47

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