Partage
  • Partager sur Facebook
  • Partager sur Twitter

Suppression des données dans ManyToMany

    19 avril 2017 à 19:39:34

    Bonsoir,

    j'ai une relation @ManyTomany entre deux classes. C'est a dire l'employé peut avoir un ou plusieurs missions de travail et chaque mission contient un ou plusieurs employés.

    Voilà le code de deux classes:

     
    @Entity
    public class Employees implements Serializable {
     
     
    	@ManyToMany
    	@JoinTable
    	(
    	name="Employees_Missions",joinColumns=
    	@JoinColumn(name="Num_Emp"), inverseJoinColumns=
    	@JoinColumn(name="Num_Mission")
    	)      
    	private List<Missions> missions;
     
    	@JsonIgnore
    	public List<Missions> getMissions() {
    		return missions;
    	}
     
    	public void setMissions( List<Missions> missions) {
    		this.missions = missions;
    	}
    }
    @Entity
    public class Missions implements Serializable{
     
    	@ManyToMany(mappedBy="missions",cascade={CascadeType.ALL, CascadeType.PERSIST})
    	private List<Utilisateurs> employees; 
     
    	@JsonIgnore
    	public List<Utilisateurs> getEmployees() {
    		return employees;
    	}
     
    	public void setEmployees(List<Utilisateurs> employees) {
    		this.employees = employees;
    	}
    }

    Ceci permet de créer une table dans la BD qui s'appelle "Employees_Missions" contenant à la fois les attributs suivantes: "Num_Emp" & "Num_Mission". Cette table contient les employés qui sont affectés dans une mission du travail.

    Pour assurer la suppression des données avec la relation @ManyToMany, j'ai ajouté la fonction ci-dessous lors de la suppression de la mission les lignes de la table "Employees_Missions" qui contient le même identifiant de la mission seront supprimés:

    @PreRemove
    public void removeMissionsFromUsers() {
       for (Utilisateurs u : employees) {
    	u.getMissions().remove(this);
      }
     }

    Code la suppression:

    @Autoward
    private MisRepository mrep;
    
    public Boolean deleteMission(id){
     
      Missions m=mrep.findOne(id); 
    mrep.delete(m);
    return true; }



    La suppression de la mission avec leur liste qui se trouve dans la table "Employees_Missions" fonctionne sans problème. Mais lors de la suppression, il supprime l'utilisateur de la table  "Utilisateurs".Donc je cherche a ne pas supprimer l'utilisateur de la table "Utilisateurs".

    Comment alors supprimer une mission et l’affectation des utilisateurs dans une mission (je parle de la table "Employees_Missions") sans supprimer l'utilisateur?

    Merci de m'aider mes amis,
     





    -
    Edité par syrine01 19 avril 2017 à 20:01:33

    • Partager sur Facebook
    • Partager sur Twitter

    Suppression des données dans ManyToMany

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown