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 :

Must have same number of columns as the referenced primary key


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut Must have same number of columns as the referenced primary key
    Bonjour,

    Je ne suis pas un expert Hibernate. Je rencontre une erreur, et je pense que cela vient de ma configuration.

    Pour simplifier, j'ai une table DE_GAR qui possède une clé étrangère vers DE_FORMUL, qui possède elle-même une clé composée.

    Tout d'abord, je ne suis pas certain de la façon de déclarer une clé étrangère avec Hibernate. Voici mes fichiers de configuration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <hibernate-mapping package="com.bouygtel.agilassur.db">
        <class name="DeFormul" table="DE_FORMUL">
            <meta attribute="sync-DAO">false</meta>
            <composite-id name="Id" class="DeFormulPK">
                <key-property name="Codfor" column="CODFOR" type="string"/>
                <key-property name="Datmdffor" column="DATMDFFOR" type="java.util.Date"/>
            </composite-id>
            [...]
        </class>
    </hibernate-mapping>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <hibernate-mapping package="com.bouygtel.agilassur.db">
        <class name="DeGar" table="DE_GAR">
            [...]
            <many-to-one name="Id" class="DeFormul" not-null="true">
                <column name="Codfor" />
                <column name="Datmdffor" />
            </many-to-one>
        </class>
    </hibernate-mapping>
    Le problème est que j'obtiens ce message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    org.hibernate.MappingException: Foreign key (FK780221FA19A8C6C8:DE_GAR [CODFOR])) must have same number of columns as the referenced primary key (DE_FORMUL [CODFOR,DATMDFFOR])

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    J'ai progressé. Maintenant, il semble que le mapping de la table DE_GAR soit correcte. Le problème venait en fait d'une partie du fichier de configuration que je n'ai pas posté dans le message précedent. Voici ce qu'il faut mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <hibernate-mapping package="com.bouygtel.agilassur.db">
        <class name="DeGar" table="DE_GAR">
            <meta attribute="sync-DAO">false</meta>
            <composite-id name="Id" class="DeGarPK">
                <key-property name="Codgar" column="CODGAR" type="string"/>
                <key-many-to-one name="Datmdffor" class="DeFormul">
                    <column name="CODFOR" />
                    <column name="DATMDFFOR" />
                </key-many-to-one>
            </composite-id>
            [...]
        </class>
    </hibernate-mapping>
    Maintenant, j'ai une autre table qui me pose le même problème, mais pour lequel je ne peux pas appliquer exactement la même solution.

    Dans l'exemple précédent, la clé étrangère vers DE_FORMUL fait partie de la clé primaire de la table DE_GAR.

    J'ai maintenant besoin de déclarer une simple clé étrangère. Voici ma configuration actuelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <hibernate-mapping package="com.bouygtel.agilassur.db">
        <class name="DeSou" table="DE_SOU">
            <many-to-one name="Codfor" class="DeFormul" not-null="true">
                <column name="CODFOR" />
                <column name="DATMDFFOR" />
            </many-to-one>
            [...]
        </class>
    </hibernate-mapping>
    Bien entendu cela ne marche pas. Je souhaiterais donc savoir tout simplement comment déclarer une clé étrangère qui pointe sur une clé composée.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    Bon, en fait, laissez tombé, il ressort finalement que mon problème vient de l'architecture de ma bdd.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Mapping] Foreign key yy must have same number of columns as zz
    Par golgoth9 dans le forum Hibernate
    Réponses: 2
    Dernier message: 19/12/2014, 20h54
  2. Réponses: 3
    Dernier message: 04/02/2014, 08h49
  3. Réponses: 9
    Dernier message: 31/12/2010, 12h08
  4. Réponses: 36
    Dernier message: 26/08/2008, 15h24
  5. Réponses: 2
    Dernier message: 02/04/2008, 13h21

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