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

Hibernate Java Discussion :

[MAPPING] one-to-one et many-to-many


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [MAPPING] one-to-one et many-to-many
    Bonjour à toutes et tous,

    Je dois associer un utilisateur à des rôles au travers d'un objet qui vas contenir cette relation.

    Mes tables (PostgreSQL) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE user (
      uid SERIAL NOT NULL
    );
    CREATE TABLE role (
      rid SERIAL NOT NULL
    );
    CREATE TABLE user_role (
      uid INTEGER NOT NULL,
      rid INTEGER NOT NULL,
      -- FOREIGN KEYS ...
    );
    Mon objet "Affectation" qui me sert à associer un utilisateur à un ou plusieurs rôles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Affectation {
      private User user;
      private List<Role> roles;
     
      // get et set..
    }
    Et le mapping suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <class name="xx.Affectation" table="user_role">
      <id column="uid" name="id">
        <generator class="foreign">
          <param name="property">user</param>
        </generator>
      </id>
     
      <one-to-one name="user" constrained="true" />	
     
      <bag name="roles" table="user_role" lazy="false">
        <key column="uid"/>   			
        <many-to-many class="xx.Role" column="rid" unique="false"/>
      </bag>
    </class>
    Mais les insertions ne fonctionnent pas car la requête générée n'insère que l'id de l'utilisateur et qu'il y à une contrainte "NOT NULL" sur la colonne "user_role"."rid" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into user_role (uid) values ('2')
    J'ai essaué de rajouter "casacade=all" ou "casacade=save-update" ainsi que "inverse=true" mais rien ne change.

    Pouvez-vous m'aider ? Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    Tu n'as pas à gérer toi même la table de jointure.
    Regarde bien l'exemple de la doc:
    http://docs.jboss.org/hibernate/stab...ional-join-m2m

  3. #3
    Invité
    Invité(e)
    Par défaut
    En dehors du set alors que j'utilise un bag, je ne vois pas de différences quand au mapping de la collection..
    Ou alors l'identifiant mais je ne pense pas que calà aie de l'importance..

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    Moi ce que je vois c'est que tu as un mapping pour la table user_role, alors que dans la doc, il n'y en a pas.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Si il y en à une, ou alors je en comprend pas tes propos : "<set name="addresses" table="PersonAddress">; "PersonAddress" est la table de relation non ?

    La nuance est que chez moi je stocke la relation dans un autre objet. Si on reprend l'exemple d'Hibernate on aurais une classe "Habitations" qui contiendrais une référence sur "Person" et une une liste d'"Address".

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    Ce que j'essaie de te dire, c'est que la table d'association existe bien, mais tu n'as pas besoin de créer une classe et un mapping.

Discussions similaires

  1. Mapping NH One to one et many to one
    Par charouel dans le forum C#
    Réponses: 0
    Dernier message: 04/10/2012, 12h27
  2. Problème de mapping Foreign key one-to-one
    Par chady dans le forum Hibernate
    Réponses: 3
    Dernier message: 21/06/2010, 00h35
  3. Mapping de relations one-to-many et inverse
    Par Invité dans le forum Hibernate
    Réponses: 11
    Dernier message: 08/04/2008, 17h41
  4. Un peu de mal a comprendre le concepte "one-to-many" et "many-to-many"
    Par chriscoolletoubibe dans le forum Hibernate
    Réponses: 4
    Dernier message: 29/03/2007, 19h50
  5. mapping de deux one-to-many
    Par emilie_caroline dans le forum Hibernate
    Réponses: 11
    Dernier message: 30/11/2006, 17h58

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