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

Play! Java Discussion :

Manipulation des relations ManyToMany


Sujet :

Play! Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 72
    Par défaut Manipulation des relations ManyToMany
    Bonjour.

    Je suis en création d'une application avec le Framework play! et je rencontre un soucis dans la création d'une relation de type ManyToMany.

    En suivant le tuto je comprend et exploite sans probleme les relations ManyToOne et OneToMany mais la je bloque (sachant qu'en plus je suis un débutant JPA).

    Bref voici les 2 classes en question :

    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
    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 models;
     
    import java.util.*;
    import javax.persistence.*;
     
    import play.db.jpa.*;
     
    import models.FormatSiteWeb; 
    import models.MotCleSiteWeb; 
    import models.ThemeSiteWeb; 
     
    @Entity
    /**
    * Classe SiteWeb
    * Classe utilisée pour stocker les différents site web references.
    * @author a.pellet <pellet.aurelien@gmail.com>
    * @see models.FormatSiteWeb;
    * @since 2010/04/16
    */
    public class SiteWeb extends Model {
     
     	// --------------------------------------------------------------------
    	// Dependances avec les autres classes
    	// --------------------------------------------------------------------
    	@ManyToOne
    	public FormatSiteWeb formatDuSiteWeb;
     
    	@ManyToMany(cascade=CascadeType.ALL)
    	public List<MotCleSiteWeb> listeDeMotsClesCorrespondantsAuSiteWeb;
     
    	@ManyToOne
    	public ThemeSiteWeb themeDuSiteWeb;
     
     
    	// --------------------------------------------------------------------
    	// Proprietes de la classe.
    	// --------------------------------------------------------------------
        public String nom;
    	public String slogan;
    	public String url;
    	@Lob
    	public String description;
     
    	/** 
            * Constructeur surcharge pour l'initialisation d'un site web.
            * @param String format
            * @param String nom
            * @param String slogan
            * @param String url
            * @param String description
            */
        public SiteWeb(FormatSiteWeb formatDuSiteWeb, ThemeSiteWeb themeDuSiteWeb, String nom, String slogan, String url, String description) {
    		// --------------------------------------------------------------------
    		// Dependances avec les autres classes
    		// --------------------------------------------------------------------
            this.formatDuSiteWeb = formatDuSiteWeb;
    		this.listeDeMotsClesCorrespondantsAuSiteWeb = new ArrayList<MotCleSiteWeb>();
    		this.themeDuSiteWeb = themeDuSiteWeb;
     
    		// --------------------------------------------------------------------
    		// Proprietes de la classe.
    		// --------------------------------------------------------------------
    		this.nom = nom;
    		this.slogan = slogan;
    		this.url = url;
    		this.description = description;
     
        }
     
     
     
    }

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    package models;
     
    import java.util.*;
    import javax.persistence.*;
     
    import play.db.jpa.*;
     
    import models.SiteWeb;
     
    @Entity
    /**
    * Classe MotsClesSiteWeb
    * Classe utilisée pour stocker les différents mots clés des site web.
    * @author a.pellet <pellet.aurelien@gmail.com>
    * @see models.SiteWeb;
    * @since 2010/04/15
    */
    public class MotCleSiteWeb extends Model {
     
    	// --------------------------------------------------------------------
    	// Dependances avec les autres classes
    	// --------------------------------------------------------------------
    	@ManyToMany(cascade=CascadeType.ALL)
    	public List<SiteWeb> listeDeSiteWebCorrespondantsAuMotCle;
     
    	// --------------------------------------------------------------------
    	// Proprietes de la classe.
    	// --------------------------------------------------------------------
        public String nomDuMotCle;
     
    	/** 
            * Constructeur surcharge pour l'initialisation d'un mot cle.
            * @param String nom
            */
        public MotCleSiteWeb(String nomDuMotCle) {
    		// --------------------------------------------------------------------
    		// Dependances avec les autres classes
    		// --------------------------------------------------------------------
    		this.listeDeSiteWebCorrespondantsAuMotCle = new ArrayList<SiteWeb>();
     
    		// --------------------------------------------------------------------
    		// Proprietes de la classe.
    		// --------------------------------------------------------------------
            this.nomDuMotCle = nomDuMotCle;
        }
     
    }
    Alors ma question est : Comment mapper la relation ManyToMany sachant que je ne peux pas renseigner les ID des tables car ils sont cachés ?

    Comment sauvegarder tout les mots clés des sites web / les trouver ?

    Quelqu'un aurait un exemple de code en ManyToMany avec un exemple de save / find ?

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Par défaut
    J'arrive un peu après la guerre, mais si cela peut servir a quelq'un..

    En faite tu n'as pas besoin de t'occuper des id, ce qu'il te manque c'est de spécifier d'un coté de la relation many-to-many l'attribut mapped-by.

    Comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @Entity
    public class MotCleSiteWeb extends Model {
     
        @ManyToMany(mappedBy="listeDeMotsClesCorrespondantsAuSiteWeb")
        public List<SiteWeb> listeDeSiteWebCorrespondantsAuMotCle;
    }
    De plus le cascadeType.All est surement une erreur, car avec ce type de cascade la suppression d'un mot clé supprimerait tous les sites ayant ce mot clé.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/02/2013, 13h22
  2. [xml]manipuler des données xml sous Oracle9i
    Par crazy dans le forum SQL
    Réponses: 7
    Dernier message: 28/02/2004, 11h40
  3. Manipuler des dates...
    Par Ti Jen-tsie dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2003, 11h46
  4. Manipulation des handle contexte
    Par rockbiker dans le forum DirectX
    Réponses: 1
    Dernier message: 09/05/2003, 18h51
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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