Bonjour;
j'ai deux classes Partenaire et ProjetPartenaire ,chaque partenairepeut avoir plusieurs ProjetPartenaire .j'ai mappé les classes avec une association <one-to-many> du Père vers le Fils.
l'ajout et la mis à jours d'un ProjetPartenaire dans la collection projetPartenaires de classe Partenaire se deroule sans probléme,mais si je supprime un ProjetPartenaire de la collection puis je fait une sauvgarde de Partenaire cela ne supprime pas ProjetPartenaire de la base de données mais il met la clé etrangére partenaire.codePartenaire du table PROJET_PARTENAIRE a null.
voici le code;
Code:
public class Partenaire implements Serializable {
private String codePartenaire;
private Collection<ProjetPartenaire> projetPartenaires ;
// getter and setter
}
Code:
public class ProjetPartenaire implements Serializable {
private Integer codeProjetPartenaire;
private Partenaire partenaire;
// getter and setter
}
Code:
mapping coté ProjetPartenaire
<many-to-one column="CODE_PARTENAIRE" name="partenaire" />
Code:
mapping coté Partenaire
<set name="projetPartenaire" cascade="all-delete-orphan" inverse="false" >
<key column="CODE_PARTENAIRE" />
<one-to-many class="ClassesJava.ProjetPartenaire" />
</set>
et coté JSF j'ai une List<ProjetPartenaire> listProjets dans un <rich:dataTable> pour ajouter et supprimer des lignes dans cette Liste ;
et enfin pour sauvgarder le Partenaire je lui affecter cette liste :
Code:
HashSet<ProjetPartenaire> listprojetspartenaire = new HashSet<ProjetPartenaire>(listProjets); // listProjets : celle utilisé dans JSF
partenaire.setProjetPartenaire(_listprojets);
// puis avec mon DAO partenaireService
partenaireService.save(this.partenaire);
// et pour supprimer
partenaireService.delete(this.partenaire);
c'est la collection qui s'occupe des liens entres Partenaire et ProjetPartenaire.j'ai pas mis ni delete ni save explicite.
si j'ai un partenaire avec 2 projet ,je veus essayé de supprimé l'un des projet (supprimé une ligne de la Liste) puis sauvgarder voici ce que hibernate fait :
Code:
Hibernate: update COM_PARTENAIRE set GLOBAL_LOCATION_NUMBER=?, CODE_PARTENAIRE_PAIRE=?,............ where CODE_PARTENAIRE=?
Hibernate: update COM_PROJET_PARTENAIRE set DESCRIPTION_PROJET_PARTENAIRE=?, CODE_PARTENAIRE=? ........where CODE_PROJET_PARTENAIRE=?
Hibernate: update COM_PROJET_PARTENAIRE set CODE_PARTENAIRE=null where CODE_PARTENAIRE=?
Hibernate: update COM_PROJET_PARTENAIRE set CODE_PARTENAIRE=? where CODE_PROJET_PARTENAIRE=?
merci d'avance pour toute idée.