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

Grails Java Discussion :

[GORM] Champs additionnels des tables de jointures


Sujet :

Grails Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 7
    Points : 12
    Points
    12
    Par défaut [GORM] Champs additionnels des tables de jointures
    Bonjour toutes, tous,

    Je galère avec Grails et Gorm, j'ai deux classes du domaine qui entretiennent une relation many-to-many, et j'aimerais pouvoir créer à loisir des champs dans la table de jointure créée implicitement par Gorm, pour qualifier la relation.

    Auriez-vous une idée dont la manière dont on peut réaliser ça ? je sais qu'il y a une propriété jointable, qui permet de forcer le nom de la table de jointure, mais je ne trouve rien dans les docs concernant l'ajout de champs à ces fameuses tables.

    Faut-il par exemple créer une nouvelle classe de domaine ?

    Mille merci à vous,

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 35
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    si ma mémoire est bonne, cette fonctionnalité n'est pas supportée par défaut dans GORM, il faut développer un bout de code pour gérer les relations many to many

    la page suivante http://www.grails.org/Many-to-Many+M...+Hibernate+XML explique cette solution delaquelle il faudrait s'inspirer pour ajouter à volonté des champs dans la table de jointure.

    Nabil Adouani

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 7
    Points : 12
    Points
    12
    Par défaut
    Merci pour ta réponse.
    C'est la constatation à laquelle j'ai fini par aboutir naturellement.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Points : 311
    Points
    311
    Par défaut
    Voici un exemple simplifié :
    relation many-to-many entre Organisme et Etablissement avec pour chaque relation une colonne tagValidation :
    La déclaration des 2 classes de base de la relation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class Organisme {
      String nom
      String urlSite
      static hasMany = [etablissements:Etablissement]
    }
     
    class Etablissement {
      String nom
      String adresse
      static belongsTo = Organisme
      static hasMany = [organismes:Organisme]	
    }
    Classe de jointure à créer manuellement comme domaine, le nom de la classe est Classe1Classe2s (le scaffolding sur les 2 tables fonctionnent correctement dans ce cas) :
    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
     
    class OrganismeEtablissements implements Serializable{
      Organisme organisme
      Etablissement etablissement
      String tagValidation
      static constraints = {
           tagValidation(nullable : true) // garder les variables nullable pour la gestion du scaffolding
      }
      static OrganismeEtablissements get(long idOrganisme,long idEtablissement){
    	//ne pas faire 1er cas lance 3 requetes au lieu d'une 
    	//return OrganismeEtablissements.get(new OrganismeEtablissements(organisme:Organisme.get(idOrganisme), etablissement:Etablissement.get(idEtablissement))) 
    	return OrganismeEtablissements.createCriteria().get {
    	  eq("organisme.id",idOrganisme)
    	  eq("etablissement.id",idEtablissement)
    	}
      }
      static mapping = {
         version false				
         id composite:['organisme', 'etablissement']
      }
    }

Discussions similaires

  1. [PDO] PDO et requête ayant des tables avec jointures
    Par ninouee dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/10/2014, 09h34
  2. [AC-2007] Requête avec des tables de jointures
    Par Vhalar dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 15/08/2011, 19h00
  3. champ dans des tables différentes
    Par pepsister dans le forum IHM
    Réponses: 2
    Dernier message: 12/02/2010, 10h01
  4. [general] interet des tables de jointures ?
    Par ludophil dans le forum Schéma
    Réponses: 3
    Dernier message: 05/10/2006, 09h48
  5. [sql] afficher deux champs de deux tables sans jointure
    Par Hell dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/06/2005, 12h38

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