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

JPA Java Discussion :

Comment ajouter les données de la relation @ManyTomany dans la table?


Sujet :

JPA Java

  1. #1
    Membre habitué
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Points : 127
    Points
    127
    Par défaut Comment ajouter les données de la relation @ManyTomany dans la table?
    Bonsoir,

    j'ai une relation @ManyTomany entre deux classes.
    C'est a dire l'employé peut avoir plusieurs missions de travail et chaque mission contient plusieurs employés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    @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 les attributs suivantes: "Num_Emp" & "Num_Mission". Cette table contient les employés qui sont affectés dans une mission.

    J'ai crée par la suite une fonction en JAX-RS pour l'ajout d'une mission:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @RequestMapping(value="/AddMissions")
        public Missions LancerMissions(@Param(value = "idEmployes") long [] idEmployes, Missions mission){
     
    		List<Utilisateurs> users = new ArrayList<Utilisateurs>();
    		for (int i=0; i < idEmployes.length; i++) {
     
    			Utilisateurs usr= utilisateur.getT(idEmployes[i]);
    		    users.add(usr);	  
    		}
                   mission.setEmployees(users);  //pour ajouter l'employé a une mission (l'ajout se fait dans la table "Employees_Missions")
    		return missionM.save(mission);
    	}
    Aprés, j'ai fais un test et j'ai constaté que tous les informations de la mission sont bien ajoutés sans problème sauf que l'affectation de l'employé dans une mission n'est pas ajouté. C'est a dire il existe aucun enregistrement dans la table " Employees_Missions" lors je crée une nouvelle mission .

    Comment je peux enregistrer l'affectation d'un employés dans une mission dans ma table "Employees_Missions" ?

    Merci de m'aider,

  2. #2
    Membre habitué
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Points : 127
    Points
    127
    Par défaut
    Le probléme a été résolu.

    Puisque je manipule la la relation ManyToMany dépend une liste des données. Donc, il faut ajouter cette fonction dans la classe Missions pour assurer l'ajout des données dans la relation "ManyToMany":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     public boolean addUser(Utilisateurs emp) {
    	        if(employees == null)
    	        	employees = new ArrayList<>();
     
    	        return employees.add(emp);
    	    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/06/2014, 09h30
  2. comment ajouter des données et les enregister dans une combobox?
    Par mohtah2011 dans le forum Discussions diverses
    Réponses: 1
    Dernier message: 24/06/2011, 20h56
  3. Réponses: 3
    Dernier message: 26/02/2007, 11h14
  4. [cr 8.5] comment exploiter les données d'un "array"
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 12
    Dernier message: 09/06/2005, 15h03
  5. [JTable] Comment récuperer les données d'un fichier texte ?
    Par Makunouchi dans le forum Composants
    Réponses: 2
    Dernier message: 03/05/2005, 17h37

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