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 :

Erreur lors d'un one to many


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut Erreur lors d'un one to many
    Bonjour à toutes et à tous,

    Je me test sur hibernate et je rencontre une erreur pour faire un one to many.

    L'erreur qui apparaiît est celle ci :
    Association references unmapped class
    Du coté de mon code j'ai :

    Mon fichier de mapping Personn :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="hbm">
      <class name="entities.Personn" table="Personn">
     
            <id name="idPers" column="idUser" type="Long">
                <generator class="sequence"/>
            </id>
     
            <discriminator column="sousclasse" type="character"/>
     
            <property name="firstName" column="firstName" type="string"/>
            <property name="lastName" column="lastName" type="string"/>
     
            <set name="identifications" inverse="true" cascade="all-delete-orphan">
                <key column="idUser"/>
                <one-to-many  class="Identification"/>
            </set>
     
      </class>
    </hibernate-mapping>
    Mon fichier de mapping Identification :
    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" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
      <class name="entities.Identification" table="Identification">
     
            <id name="idUser" column="idUser" type="long">
                <generator class="sequence"/>
            </id>
     
            <property name="nickname" column="nickname" type="String"/>
            <property name="password" column="password" type="String"/>
     
            <many-to-one name="pers" class="Personn" not-null="true"/>
     
      </class>
    </hibernate-mapping>

    Enfin, ma classe qui setter mes "entities" :
    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
     
    Session session = HibernateUtil.getSessionFactory().openSession();
     
            session.beginTransaction();
     
            Personn personn = new Personn();
            Identification identification = new Identification();
     
            personn.setFirstName("Leon");
            personn.setLastName("Dupond");
     
            identification.setNickname("x-plode");
            identification.setPassword("password");
     
            session.getTransaction().commit();
            session.close();

    Pourriez vous me dire où ai je fais une erreur ?

    PS : je vous joins un diagramme UML afin de voir se que j'essaye de faire

    Merci d'avance,
    Images attachées Images attachées  

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

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    As tu bien ajouté les hbm au hibernate.cfg.xml ?

  3. #3
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Citation Envoyé par fr1man Voir le message
    As tu bien ajouté les hbm au hibernate.cfg.xml ?
    Oui fr1man, j'ai bien ajouté les hbm au fichier de config
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <mapping resource="Personn.hbm.xml"/>
        <mapping resource="Identification.hbm.xml"/>

    Citation Envoyé par zorm Voir le message
    Bonjour,

    Je sais pas si ça va directe résoudre le problème mais dans tes
    [FONT=monospace]
    [/FONT]<many-to-one name="pers" class="Personn" not-null="true"/>[FONT=monospace]
    [/FONT]<one-to-many class="Identification"/>
    Tu as pas mis les packages où se situent tes classes donc il ne peut pas faire le mapping à ce niveau
    Zorm, ton explication m'a permis de pouvoir rechercher dans mes fichiers de config où il y avait apparemment une erreur de déclaration de package de mes classes.

    Malheureusement, je suis tombé sur une autre erreur .
    Dans le but de ne pas surchargé le forum, je ne valide pas ce post afin de pouvoir poster à la suite si j'ai besoin d'aide.
    En tout cas, merci beaucoup.

  4. #4
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Bonjour à tous,

    Je reviens vers car je poursuis mes aventures avec Hibernate.

    Pour mémoire, je souhaite faire un one-to-many en SE.

    Après plusieurs erreurs que j'ai pu résoudre, je fais face à une erreur pertinente qui me pose soucis.

    L'erreur en question :
    SEVERE: Error parsing XML: XML InputStream(9) The content of element type "id" must match "(meta*,column*,type?,generator?)".
    Initial SessionFactory creation failed.org.hibernate.InvalidMappingException: Could not parse mapping document from resource Identification.hbm.xml
    Exception in thread "main" java.lang.ExceptionInInitializerError
    Voici quelques fichiers de mon application.

    Mon fichier mapping de Personn :
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="hbm">
      <class name="entities.Personn" table="Personn">
     
            <id name="idUser" column="idUser" >
                <generator class="increment"/>
            </id>
     
            <discriminator column="sousclasse" type="character"/>
     
            <property name="firstName" column="firstName"/>
            <property name="lastName" column="lastName"/>
     
            <set name="identifications" inverse="true" cascade="all-delete-orphan">
                <key column="idUser"/>
                <one-to-many  class="entities.Identification"/>
            </set>
     
      </class>
    </hibernate-mapping>

    Mon fichier de mapping d'Identification :

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
      <class name="entities.Identification" table="Identification">
     
            <id name="idUser">
                <generator class="increment"/>
                <column name="idUser"/>
            </id>
     
            <property name="nickname" column="nickname"/>
            <property name="password" column="password"/>
     
            <many-to-one name="pers" class="entities.Personn" not-null="true"/>
     
      </class>
    </hibernate-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
    Session session = HibernateUtil.getSessionFactory().openSession();
     
            session.beginTransaction();
     
            Personn personn = new Personn();
            Identification identification = new Identification();
     
            personn.setFirstName("Leon");
            personn.setLastName("Dupond");
     
            identification.setNickname("x-plode");
            identification.setPassword("password");
     
            session.getTransaction().commit();
            session.close();
    Je vous remercie d'avance pour l'aide apportée.

  5. #5
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    L'erreur est située au niveau du parsing xml et est "indépendante" d'hibernate pour le coup.

    Il semble que la DTD définie l'ordre suivant meta*,column*,type?,generator? pour l'élément ID

    Donc, si tu remplaces dans ton fichier Identification.hbm.xml, l'élément id par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <id name="idUser">
     <column name="idUser"/>
     <generator class="increment"/>
    </id>
    Je pense que ça passera ton problème actuel

  6. #6
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Citation Envoyé par zorm Voir le message
    Bonjour,

    L'erreur est située au niveau du parsing xml et est "indépendante" d'hibernate pour le coup.

    Il semble que la DTD définie l'ordre suivant meta*,column*,type?,generator? pour l'élément ID

    Donc, si tu remplaces dans ton fichier Identification.hbm.xml, l'élément id par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <id name="idUser">
     <column name="idUser"/>
     <generator class="increment"/>
    </id>
    Je pense que ça passera ton problème actuel
    Merci beaucoup, ça fonctionne. Bizarre qu'il ne prends pas dans n'importe quel ordre.

    Bon par contre je retombe sur une erreur. Est ce que tu pourrais m'en dire plus :

    Initial SessionFactory creation failed.org.hibernate.MappingException: Could not format discriminator value to SQL string
    Personnellement, je commence à déprimer car je vais d'erreur en erreur.

  7. #7
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    Je sais pas si ça va directe résoudre le problème mais dans tes
    <many-to-one name="pers" class="Personn" not-null="true"/>
    <one-to-many class="Identification"/>

    Tu as pas mis les packages où se situent tes classes donc il ne peut pas faire le mapping à ce niveau

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

Discussions similaires

  1. [Mapping] Erreur lors du mapping one-to-many
    Par nifertari18 dans le forum Hibernate
    Réponses: 2
    Dernier message: 21/05/2013, 21h15
  2. Problème lors d'un delete avec une relation one-to-many
    Par el_harrathi dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 01/11/2011, 15h01
  3. Réponses: 1
    Dernier message: 05/10/2011, 14h47
  4. Erreur lors de modification d'une table
    Par seb.49 dans le forum SQL
    Réponses: 11
    Dernier message: 13/01/2003, 17h16
  5. [VB6] Erreur lors de l'ouverture d'un document Word
    Par Marco le Pouillot dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/01/2003, 09h30

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