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 :

mapper une Table faisant Reference à elle meme


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Par défaut mapper une Table faisant Reference à elle meme
    bonsoir,
    j'ai une table qui fait reference à elle meme c'est à dire elle contient une clé etranger qui fait reference à la clé primaire.

    le probleme que j'ai c'est que je sais pas comment mapper ça en hibernate .

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Par défaut
    Hibernate sais gérer ce genre de références circulaire.
    cela dépend du type de relation (one-to-many, one-to-one...)

    Voici un exemple avec une table catégorie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE TABLE CATEGORY
    (
    CATID INTEGER NOT NULL,
    CATNAME VARCHAR2(255 BYTE) NOT NULL,
    PARENTID INTEGER DEFAULT 0
    )
     
     
    ALTER TABLE CATEGORY ADD (
    CONSTRAINT FK_CATEGORY FOREIGN KEY (PARENTID) 
    REFERENCES CATEGORY (CATID));
    et le mapping hibernate associé avec une relation one-to-one vers un parent et many-to-many vers des enfants (c'est seulement un exemple) :

    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
      <class name="com.mycompany.entity.Category" table="CATEGORY">
      <id name="catId" type="int" column="CATID">
        <generator class="assigned" />
      </id>
     
      <property name="catName" column="CATNAME" type="java.lang.String" />
      <one-to-one name="parentCategory" />
     
      <set name="childCategories" 
        table="CATEGORY"
        inverse="true"
        lazy="true"
      >
        <key column="PARENTID"/>
        <many-to-many class="com.mycompany.entity.Category" column="CATID" />
     
      </set> 
      </class>
     
    </hibernate-mapping>

  3. #3
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Par défaut
    merci pour votre reponse, mais moi j'ai une relation manyto-one:

    j'ai essayé la solution suivante:

    la tabe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CATID INTEGER NOT NULL,
    CATNAME VARCHAR2(255 BYTE) NOT NULL,
    PARENTID INTEGER DEFAULT 0
    )
     
     
    ALTER TABLE CATEGORY ADD (
    CONSTRAINT FK_CATEGORY FOREIGN KEY (PARENTID) 
    REFERENCES CATEGORY (CATID));
    le mapping:
    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
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     
    <hibernate-mapping>
      <class name="com.mycompany.entity.Category" table="CATEGORY">
      <id name="catId" type="int" column="CATID">
        <generator class="assigned" />
      </id>
     
      <property name="catName" column="CATNAME" type="java.lang.String" />
     
     <many-to-one class="com.mycompany.entity.Category" column="CATID" name="childCategories" />
     
      </class>
     
    </hibernate-mapping>
    et dans le fichier Category.java j'ajoute deux attributs:
    Category Parent ;
    et
    List<Category> childCategories;

    mais ça marche pas

    merci.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Par défaut
    mais ça marche pas
    Qu'est-ce qui ne marche pas ?
    Tu as un message d'erreur ?

Discussions similaires

  1. Mapper une table
    Par ricil78 dans le forum Débuter
    Réponses: 6
    Dernier message: 29/12/2006, 14h41
  2. Mapper une table sans clé primaire
    Par rosros dans le forum Hibernate
    Réponses: 4
    Dernier message: 14/09/2006, 15h16
  3. mapper une table sans clé
    Par clairette dans le forum Hibernate
    Réponses: 4
    Dernier message: 28/08/2006, 17h26
  4. [Hibernate] Mapper une table sans clé primaire
    Par neuromencien dans le forum Hibernate
    Réponses: 4
    Dernier message: 13/06/2006, 17h05
  5. effacer une table que si elle existe ?
    Par soniaSQL dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/06/2003, 14h55

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