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 :

Problème de mappage


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Par défaut Problème de mappage
    Bonjour,

    Je m'essaye à hibernate, et ma fois c'est pas évident d'en comprendre le fonctionnement.
    Je m'explique.

    Je tente de mapper 2 classes java : User et ListeUser à 2 tables db2 respectivement USER et LISTE_USER.

    voici le code exécuter pour la création de mes 2 tables :

    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
     
    create table PORTEFEUILLES.USER (
       ID_USER              DECIMAL(15)            not null,
       NOM       	  VARCHAR(50)            not null,
       PRENOM              VARCHAR(50)	      not null,
       TYPE             	  VARCHAR(50)            not null,
       DN	               VARCHAR(50)	       not null,
    primary key (ID_USER)
    );
     
     
    create table PORTEFEUILLES.LISTE_USER (
       ID_LISTE_USER        DECIMAL(15)            not null,
       ID_USER	      DECIMAL(15)	         not null,
    primary key (ID_LISTE_USER),
    foreign key (ID_USER) references PORTEFEUILLES.USER (ID_USER)
    	on delete restrict
    );
    et voici le code de mes classes persistantes.

    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     
    public class User {
     
    	private Long id_user;
    	private String nom;
    	private String prenom;
    	private String type;
    	private String dn;
     
     
    	/**
             * @return
             */
    	public String getDn() {
    		return dn;
    	}
     
    	/**
             * @return
             */
    	public Long getId_user() {
    		return id_user;
    	}
     
    	/**
             * @return
             */
    	public String getNom() {
    		return nom;
    	}
     
    	/**
             * @return
             */
    	public String getPrenom() {
    		return prenom;
    	}
     
    	/**
             * @return
             */
    	public String getType() {
    		return type;
    	}
     
    	/**
             * @param string
             */
    	public void setDn(String string) {
    		dn = string;
    	}
     
    	/**
             * @param long1
             */
    	public void setId_user(Long long1) {
    		id_user = long1;
    	}
     
    	/**
             * @param string
             */
    	public void setNom(String string) {
    		nom = string;
    	}
     
    	/**
             * @param string
             */
    	public void setPrenom(String string) {
    		prenom = string;
    	}
     
    	/**
             * @param string
             */
    	public void setType(String string) {
    		type = string;
    	}
     
    }
     
    import java.util.*;
     
    /**
     * @author alecomte
     */
    public class ListeUser {
     
    	private Long id_liste_user;
     
    	//associations
    	private List user;
     
     
    	/**
             * @return
             */
    	public Long getId_liste_user() {
    		return id_liste_user;
    	}
     
    	/**
             * @return
             */
    	public List getUser() {
    		return user;
    	}
     
    	/**
             * @param long1
             */
    	public void setId_liste_user(Long long1) {
    		id_liste_user = long1;
    	}
     
    	/**
             * @param list
             */
    	public void setUser(List list) {
    		user = list;
    	}
     
    }
    Vous l'aurez bien compris il y a une clef étrangère (ou foreign key) de type USER_ID dans ma table LISTE_USER. Ainsi je vais pouvoir à partir d'une liste d'utilisateur, récupérer tous les utilisateurs associés.

    Maintenant comment mapper ces 2 classes dans mes 2 fichiers User.hbm.xml et ListeUser.hbm.xml? Plus particulièrement comment mapper le Set?
    Parce que malgré que je relise et relise la doc hibernate et les différents exemples sur le net, il y a des trucs que je ne saisis pas bien.

    Si quelqu'un pouvait m'aider à comprendre par exemple le fonctionnement des one-to-many, many-to-one...

    Merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Ta structure de tables n'est pas bonne : telle qu'elle est faite l'utilisateur est un attribut de la liste (la colonne ID_USER de la table LIST_USER).

    Si un utilisateur peut faire partie de plusieurs listes, c'est une relation many-to-many Il faudrait que tu crées une 3e table de lien, avec une colonne ID_USER et une ID_LISTE, puis virer la colonne ID_USER de LIST_USER.

    Si un utilisateur ne fait partie que d'une liste, c'est une many-to-one (ou one-to-many suivant la façon de voir) Il faut rajouter une colonne ID_LIST dans la table USER, puis virer la colonne ID_USER de LIST_USER.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Par défaut
    Merci de ta réponse, mais en fait elle n'explique pas vraiment le pourquoi du comment.
    Je me suis renseigné, il semble que j'avais une mauvaise façon de créer des tables de bases de données.
    En fait si vous voulez, on peut créer des tables dans une bases de données en terme d'association de tables. Il ne faut pas penser en terme de composition et c'était la mon problème.

    Au début je voulais donc créer une table intermédiaire "Liste_User" entre la table "User" et une table "Affaire", ainsi je voulais associer une liste de user à une affaire. Cependant, j'avais pensé ma table "Liste"User" en terme de composition, ce qui faisait que cette table ne servait à rien parceque d'un point de vue de la CARDINALITE entre les tables, je n'avais rien changé, les relations étaient toujours N/N au lieu de 1/N ou N/1 ou 1/1.

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/01/2010, 14h24
  2. Problème de mappage réseau
    Par Yepazix dans le forum Windows 7
    Réponses: 2
    Dernier message: 20/11/2009, 01h33
  3. Problème de mappage texte dans Excel VB6
    Par LOUNIZARTE dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/11/2009, 14h39
  4. Problème de mappage réseau
    Par emil_2_17 dans le forum Windows Vista
    Réponses: 0
    Dernier message: 30/12/2008, 17h11
  5. problème de mappage sur champ date
    Par pascal35 dans le forum DB2
    Réponses: 1
    Dernier message: 07/02/2008, 15h09

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