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 :

JPA @ManyToMany: enregistrer dans la 3e table


Sujet :

JPA Java

  1. #1
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut JPA @ManyToMany: enregistrer dans la 3e table
    Bonjour

    J'ai 2 modèles "Entrée" et "Emplacement" qui sont liés par une relation @ManyToMany, c'est-à-dire qu'une entrée de marchandises peut avoir plusieurs emplacements dans l'entrepot, et un emplacement peut contenir plusieurs marchandises:

    Code java : 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    package com.nitraentrepot.model;
     
    import java.util.Set;
     
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.JoinTable;
    import javax.persistence.ManyToMany;
    import javax.persistence.Table;
     
     
    @Entity
    @Table(name = "EMPLACEMENT")
    public class Emplacement {
     
    	@Id
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	@Column(name = "ID_EMPLACEMENT", updatable = false, nullable = false)
    	private long idEmplacement;
     
    	@Column(name = "NUM_EMPLACEMENT",  insertable=true, updatable=true, nullable=false)
    	private String numEmplacement;
     
    	@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
        @JoinTable(
                name = "Emplacement_Entree",
                joinColumns = {@JoinColumn(name = "emplacement_id")},
                inverseJoinColumns = {@JoinColumn(name = "entree_id")}
        )
     
        private Set<Entree> entrees;
     
     
    	public Emplacement() {
    		super();
    	}
     
     
     
    	public Emplacement( String numEmplacement, boolean isDone) {
    		super();
    		this.numEmplacement = numEmplacement;		
    	}
     
    	public long getIdEmplacement() {
    		return idEmplacement;
    	}
     
    	public void setIdEmplacement(long idEmplacement) {
    		this.idEmplacement = idEmplacement;
    	}
     
    	public String getNumEmplacement() {
    		return numEmplacement;
    	}
     
    	public void setNumEmplacement(String numEmplacement) {
    		this.numEmplacement = numEmplacement;
    	}
     
     
    	public Set<Entree> getEntrees() {
    		return entrees;
    	}
     
    }

    Code java : 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    package com.nitraentrepot.model;
     
    import java.util.Set;
     
    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.JoinTable;
    import javax.persistence.ManyToMany;
    import javax.persistence.Table;
     
     
    @Entity
    @Table(name = "EMPLACEMENT")
    public class Emplacement {
     
    	@Id
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	@Column(name = "ID_EMPLACEMENT", updatable = false, nullable = false)
    	private long idEmplacement;
     
    	@Column(name = "NUM_EMPLACEMENT",  insertable=true, updatable=true, nullable=false)
    	private String numEmplacement;
     
    	@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
        @JoinTable(
                name = "Emplacement_Entree",
                joinColumns = {@JoinColumn(name = "emplacement_id")},
                inverseJoinColumns = {@JoinColumn(name = "entree_id")}
        )
     
        private Set<Entree> entrees;
     
     
    	public Emplacement() {
    		super();
    	}
     
     
     
    	public Emplacement( String numEmplacement, boolean isDone) {
    		super();
    		this.numEmplacement = numEmplacement;		
    	}
     
    	public long getIdEmplacement() {
    		return idEmplacement;
    	}
     
    	public void setIdEmplacement(long idEmplacement) {
    		this.idEmplacement = idEmplacement;
    	}
     
    	public String getNumEmplacement() {
    		return numEmplacement;
    	}
     
    	public void setNumEmplacement(String numEmplacement) {
    		this.numEmplacement = numEmplacement;
    	}
     
     
    	public Set<Entree> getEntrees() {
    		return entrees;
    	}
     
    }

    Lors du lancement l'application une "e table appelée "Emplacement_Entree" est créée.

    J'arrive à insérer les données d'une entrée, mais je voudrais savoir comment insérer les données dans cette 3e table.

    Voici ce que j'ai tenté mais l'insertion dans la 3e table ne marche pas:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @PostMapping("/ajouterEntree")
    	public ResponseEntity<String> addEntree(@Valid Entree entree, BindingResult result,ModelMap modelMap, @RequestParam(name = "numDossier") String numDossier, @RequestParam(name = "emplacement") String liste_emplacements) {
    Emplacement e = new Emplacement();
    					e.setIdEmplacement(75);
    					e.getEntrees().add(entree);
    					entree.getEmplacements().add(e);
     
    					entreeService.saveEntree(entree);
     
    					return new ResponseEntity<String>("ok" + result, HttpStatus.OK);
    				}

  2. #2
    Membre actif
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Points : 240
    Points
    240
    Par défaut
    Ok j'ai pu régler le problème:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if(!liste_emplacements.equals(""))
    				{
    					List<String> list = new ArrayList<String>(Arrays.asList(liste_emplacements.split(",")));
    					Emplacement[] emp = new Emplacement[list.size()];
    					for (int i=0; i<list.size() ;i++)
    					 {
    						 emp[i] = new Emplacement(Long.parseLong(list.get(i)));
    						 entree.getEmplacements().add(emp[i]);
    						 emp[i].getEntrees().add(entree);
     
    					 }
    				}
     
    				entreeService.saveEntree(entree);
    				return new ResponseEntity<String>("ok" + result, HttpStatus.OK);

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

Discussions similaires

  1. Copier un enregistrement dans une même table
    Par slammer dans le forum Langage SQL
    Réponses: 11
    Dernier message: 05/05/2010, 00h17
  2. Réponses: 2
    Dernier message: 05/06/2006, 15h24
  3. Rapatrier des enregistrements dans la bonne table
    Par el_quincho dans le forum Access
    Réponses: 1
    Dernier message: 13/03/2006, 15h41
  4. Copier un ensemble d'enregistrement dans la meme table
    Par SergeF dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2004, 19h22
  5. copie d'un enregistrement dans une deuxième table
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 5
    Dernier message: 03/03/2004, 13h51

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