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 :

[DEBUTANT] many-to-one erreur de mapping ?!


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut [DEBUTANT] many-to-one erreur de mapping ?!
    Salut à tous

    je commence a utiliser hibernate, jusque là tout se passait bien mais j'ai du faire une association many-to-one et je crois que ca me fait une erreur ...
    Voila j'ai une classe TypeApplication et une Parametre sachant qu'une type d'appli peut avoir plusieurs paramètres et un paramètre correspond seulement a un type d'appli, d'ou un type many-to-one...
    alors voila mes différents classes et mapping...
    Parametre.hbm.xml
    <?xml version="1.0" encoding='utf-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    <hibernate-mapping package="fr.paf.persistance">
    <class name="Parametre" table="PARAMETRE">
    <id name="idParam" type="integer" column="IDPARAM">
    <generator class="increment" />
    </id>
    <property name="nomParam"/>
    <property name="momentSaisie" type="integer" />
    <property name="typeParam" type="integer"/>
    <many-to-one name="codeTypeAppli" class="TypeApplication" column="CODETYPEAPPLI" />
    <many-to-one name="parametrePere" class="Parametre" column="IDPARAM"/>
    </many-to-one>
    </class>
    </hibernate-mapping>
    Parametre.java
    public class Parametre {

    private int idParam;
    private String nomParam;
    private int momentSaisie;
    private int typeParam;
    private String codeTypeAppli;
    private int parametrePere;
    avec tout les setteurs et getteurs biensur....
    voilà ce que j'essaye de faire dans une classe :
    ...
    Parametre P = new Parametre();
    P.setNomParam(nomGroupe[0]);
    P.setCodeTypeAppli(codeTypeAppli);
    P.setMomentSaisie(1);
    P.setTypeParam(1);
    session.save(P);
    tx.commit();
    ...
    j'ai essayé de mettre une valeur a parametrePere meme si il n'y en a pas et ca a rien changé ...
    voilà l'erreur qu'il me met
    Erreur lors de l'insertion en base net.sf.hibernate.MappingException: Unknown entity class: java.lang.String
    Merci de votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private String codeTypeAppli;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <many-to-one name="codeTypeAppli" class="TypeApplication" column="CODETYPEAPPLI" />
    sont incohérents... Ton attribut codeTypeAppli doit être un objet instance de TypeApplication et non une String ...

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    ahhh ok je ne savais pas
    en effet ca a l'air de mieux marcher ... il fait donc le rapprochement tout seul avec la colonne concernée ....

    et comment cela se passe lorsqu'il s'agit d'une assocation d'une table vers la même table ?! il me dit que la colonne est répétée ...
    Le .hbm.xml n'a pas changé
    <class name="Parametre" table="PARAMETRE">
    <id name="idParam" type="integer" column="IDPARAM">
    <generator class="increment" />
    </id>
    <property name="nomParam"/>
    <property name="momentSaisie" type="int" />
    <property name="typeParam" type="int"/>
    <many-to-one name="codeTypeAppli" class="TypeApplication" column="CODETYPEAPPLI" not-null="true" />
    <many-to-one name="parametrePere" class="Parametre" column="IDPARAM" />
    </class>
    mais le .java est devenu :
    public class Parametre {

    private int idParam;
    private String nomParam;
    private int momentSaisie;
    private int typeParam;
    private TypeApplication codeTypeAppli;
    private Parametre parametrePere;
    Merki Bcp !!!!!

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Tu peux donner l'erreur exactement que tu as ? (éventuellement le tracing complet des messages hibernate c'est bien aussi)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    Initial SessionFactory creation failed.net.sf.hibernate.MappingException: Repeated column in mapping for class fr.paf.persistance.Parametre should be mapped with insert="false" update="false": IDPARAM
    14 mai 2007 13:49:15 org.apache.struts.actions.DispatchAction dispatchMethod
    Voilà ce qu'il me dit ....
    je voudrais être sur d'avoir bien compris quand même ...
    dans me many-to-one
    le name correspond au nom de la colonne ds la table où on est
    class c'est la classe représentant la table associée
    et column le nom de la colonne où est stockée la valeur associée...

    Merci bcp !!!

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

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <many-to-one name="parametrePere" class="Parametre" column="IDPARAM" />
    IDPARAM est déjà le nom de colonne de ta clé primaire.
    Il faut que tu donnes un autre nom à cette colonne.
    Chaque ligne de ta table aura ainsi une clé primaire, et l'id d'un parametre père.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    ouais ok c'est bon ca marche j'avais essayé mais ca m'avait fait un bug j'avais du me tromper quelque part...
    en fait préciser column c'est au cas ou la colonne de la table n'a pas le même nom que la propriété c'est ça ??!!

    Merci bcp en tout cas !!!

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

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    Exactement, c'est pour avoir un nom de colonne différent du nom de la propriété.

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

Discussions similaires

  1. many-to-one, erreur "Unable to instantiate default tuplizer"
    Par asmafouni dans le forum Hibernate
    Réponses: 1
    Dernier message: 22/04/2013, 12h08
  2. Mapping xml et relation many-to-one
    Par dboujot dans le forum Hibernate
    Réponses: 0
    Dernier message: 05/06/2009, 16h41
  3. Priblème de mapping many-to-one
    Par youdev dans le forum Hibernate
    Réponses: 1
    Dernier message: 31/01/2007, 05h35
  4. [Debutant] absence des one-to-many et many-to-one
    Par tck-lt dans le forum Hibernate
    Réponses: 2
    Dernier message: 15/12/2006, 12h33
  5. Réponses: 2
    Dernier message: 17/07/2006, 14h45

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