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 :

Trois tables avec une relation


Sujet :

Hibernate Java

  1. #1
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut Trois tables avec une relation


    Je suis sur une application Java Web donc en JEE (Je vous laisse d’ailleurs déplacer le sujet si nécessaire).

    J'ai une base de données dont 3 tables ont une relation commune.

    Voici une partie du MCD :
    Nom : CapturePartMCD.JPG
Affichages : 251
Taille : 26,4 Ko

    On obtiens donc le MLD :

    Nom : CapturePartMLD.JPG
Affichages : 291
Taille : 36,8 Ko
    On a donc une table intermédiaire.

    J'ai créer mes classes java avec les annotations Hibernate afin de créer les tables dans la base :

    Voici un peut de code (j'ai supprimer les constructeurs et les setters pour une meilleure lisibilité)

    Classe Partenaire :
    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
    @SuppressWarnings("serial")@Entity
    @Table
    public class Partenaire implements Serializable{
        private int id_partenaire;
        private String nom_partenaire;
        private Client client;
        private Set <Affaire> affaire = new HashSet<Affaire>(0);
     
     
        @Column
        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        public int getId_partenaire() {
            return id_partenaire;
        }
     
     
        @Column(name="nom_partenaire", nullable=false, length=255, unique=false)
        public String getNom_partenaire() {
            return nom_partenaire;
        }
     
     
        @OneToOne(fetch = FetchType.LAZY)
        public Client getClient() {
            return client;
        }
     
     
        @OneToMany(fetch = FetchType.LAZY)
        public Set<Affaire> getAffaire() {
            return affaire;
        }
    }
    Classe Client
    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
    @SuppressWarnings("serial")@Entity
    @Table
    public class Client implements Serializable{
        private int id_client;
        private String nom_client;
        private Set <Affaire> affaires = new HashSet<Affaire>(0);
        private Set <Partenaire> partenaire = new HashSet<Partenaire>(0);
     
     
        @Column
        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        public int getId_client() {
            return id_client;
        }
     
     
        @Column(name="nom_client", nullable=false, length=255, unique=false)
        public String getNom_client() {
            return nom_client;
        }
     
     
        @OneToMany(fetch = FetchType.LAZY)
        public Set<Affaire> getAffaires() {
            return affaires;
        }
     
     
        @OneToMany(fetch = FetchType.LAZY)
        public Set<Partenaire> getPartenaire() {
            return partenaire;
        }
    }
    Classe Affaire :
    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
    @SuppressWarnings("serial")@Entity
    @Table
    public class Affaire implements Serializable{
        private int id_affaire;
        private String nom_affaire;
        private String poste;
        private String donneur_ordre;
        private Client client;
        private Partenaire partenaire;
     
     
        @Column
        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        public int getId_affaire() {
            return id_affaire;
        }
     
     
        @OneToOne(fetch = FetchType.LAZY)
        public Client getClient() {
            return client;
        }
     
     
        @OneToOne(fetch = FetchType.LAZY)
        public Partenaire getPartenaire() {
            return partenaire;
        }
     
     
    }
    Classe de la table intermédiaire RelationAffaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @SuppressWarnings("serial")@Embeddable
    public class RelationAffaire implements Serializable{
     
     
        @Column(name="id_affaire")
        private int id_affaire;
        @Column(name="id_client")
        private int id_client;
        @Column(name="id_partenaire")
        private int id_partenaire;
     
     
     
    }
    EDIT : Je viens de voir un tuto qui disait de faire une classe RelationAffaireId (ou autre nom ^^)
    Je vais voir mais mes tests pour le moment n'ont rien données de fonctionnel


    Comme tel, je n'est aucune erreur mais dans ma base, je n'ai pas UNE tables intermédiaire mais TROIS :

    Nom : CapturePhPAdmin.JPG
Affichages : 234
Taille : 15,8 Ko

    Mon fichier hibernate.cfg.xml :
    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
    <!DOCTYPE hibernate-configuration PUBLIC    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
     
    <hibernate-configuration>
        <session-factory>
            <property name="hibernate.show_sql">true</property>
            <property name="hibernate.hbm2ddl.auto">update</property>
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sii</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password"></property>
            <property name="hibernate.dialect">org.hibernate.dialect.MySQL57InnoDBDialect</property>
     
            <mapping class="sii.dsi.beans.User"/>
            <mapping class="sii.dsi.beans.Partenaire"/>
            <mapping class="sii.dsi.beans.Client"/>
            <mapping class="sii.dsi.beans.Affaire"/>
            <mapping class="sii.dsi.beans.RelationAffaire"/>       
     
        </session-factory>
    </hibernate-configuration>


    Comment faire pour n'avoir q'une table intermédiaire ??

    PS : 1ere fois que je fais du mapping Hibernate

    Merci d'avance pour votre aide.

  2. #2
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Bonjour. J'ai apporter des modif à mon MCD pour simplifier ce problème.

    Donc, plus de problème à ce niveau là.

    Désolé pour le dérangement.

    Bonne journée.

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/09/2013, 11h07
  2. création de Table avec une relation
    Par Sim0799 dans le forum Modélisation
    Réponses: 1
    Dernier message: 06/02/2010, 14h03
  3. Réponses: 3
    Dernier message: 25/06/2008, 16h21
  4. Pb avec une relation entre table
    Par stephane77fr dans le forum Windows Forms
    Réponses: 3
    Dernier message: 17/08/2007, 17h28

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