[Hibernate] Suppression d'un element d'une collection
Voila, j'ai un petit soucis avec Hibernate lorsque j'essais de supprimer un element d'une collection dans une classe :
Soit une classe User possedant une collection de Fichier.
Lors de la suppression d'un Fichier de la collection de l'utilisateur, la base ne se met pas à jour.
Le code principal :
Code:
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 34 35 36 37 38 39 40 41 42
|
public void supprimerFichier(int idUser,int idFichier) {
User us;
Fichier f ;
try {
us = recupererUser(idUser); //Exception a gerer
f = manager.recupererFichier(idFichier); //On recupère le fichier
}
catch (IllegalArgumentException e){
throw e;
}
//Test bidon ca passe sans soucis
if (f == null)
System.out.println("Probleme de recuperation fichier");
//On reattache l'user a la persistance pour la prise en compte des modif
try {
manager.startSession();
manager.startTransaction();
manager.attach(us);
us.removeFichier(f);//On enleve le fichier de la liste
manager.commit();
manager.closeSession();
/* StockageFichier stock = new StockageFichier();
stock.setEspacePerso(us.getNom()+ us.getPrenom());
stock.supprimer(f.getNom());*/
}
catch (IllegalArgumentException e) {
e.printStackTrace(); //Avertir du pb le fichier ne peut être supprimé
}
catch (IOException e) {
e.printStackTrace(); //Avertir du pb le fichier ne peut etre supprimé
}
catch (Exception e) {
e.printStackTrace();
}
} |
Le code de removeFichier de la classe User
Code:
1 2 3 4 5 6 7
|
public void removeFichier(Fichier fichier) {
if (fichier == null)
throw new IllegalArgumentException("Impossible de retirer un fichier inexistant");
fichier.setUser(null);
this.getFichiers().remove(fichier);
} |
LOgiquement, l'user etant attaché a la session, les modif devrai etre prise en compte. Faut t'il explicitement supprimé l'objet Fichier (ca me parait a contresens du principe Hibernate).
Précision : ma relation est déclarer dans les fichier XML avec cascade="all".
Une idée du soucis ?