-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Probleme au niveau de suppression avec cascadeALL
PostPosted: Mon May 26, 2008 4:26 am 
Newbie

Joined: Mon May 26, 2008 4:17 am
Posts: 3
bonjour,

J'ai un problème avec la suppression des fils dans une relation 1-N
Parent:1----N:Fils



Les 2 classes java sont les suivants:


class Parent{

private List<Enfant> enfants = new ArrayListEnfant();

@OneToMany(mappedBy=parent,fetch=FetchType.EAGER,cascade=CascadeType.ALL)
public ListEnfants getEnfants() {
return enfants;
}

public void setEnfants(List<Enfant> enfants) {
this.enfants= enfants;
}

}

---------------------------------------------------------------------------------------------------

class Enfant{

private parent;

@ManyToOne
public Parent getParent() {
return parent;
}

public void setParent(Parent parent) {
this.parent = parent;
}


}

---------------------------------------------------------------------------------------------------


C'est qui est bon avec cascadeALL est qu'elle gérè la persistance de tous les enfants sans avoir a persister les enfant un à un. Ce qui resoud plusieurs difficultés.

Le problème est qu'on peut pas supprimer un seul enfant parmi toute la liste des enfants.
Ce qui provoque pa mal de probleme

y a t'il une methode pour faire la suppression d'un seul fils parmi toute la liste

Si vous avez une réponse , ca serai très gentil :)


merci d'avance


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jun 22, 2008 4:43 pm 
Proxool Developer
Proxool Developer

Joined: Tue Aug 26, 2003 10:42 am
Posts: 373
Location: Belgium
Pour la suppression:

Code:
parent.getEnfants().remove(index/object);


Lors du prochain flush, Hibernate détectera le changement dans la collection et prendra les mesures nécessaires.

Par contre, cela ne veut pas dire que l'enfant sera effectivement supprimé de la DB. Ceci n'est vrai que si l'enfant devient un "orphan" et que tu autorises la cascade correspondante (ce qui n'est pas inclus dans cascade-all). Tu peut également forcer toi-même la suppression via un session.delete()

Là où tu risques d'avoir un second problème c'est un "cannot insert null value" causé par le mapping enfant.parent qui semble être "mandatory". Pour ma part, le lien enfant.parent doit être indiqué comme "inverse" si tu considères que la relation parent-enfant appartient au parent (et est donc gérée via la collection correspondante) -> cfr. documentation sur le sujet "inverse mapping".

Bonne chance.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.