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

C# Discussion :

NHibernate Mapping Exception [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Informaticien
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Informaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Par défaut NHibernate Mapping Exception
    Bonjour suis débutant en Hibernante et voila mon projet:

    la classe Operation:
    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
    class Operation
        {
     
     
            public virtual int TYPEOPERATION { get; set; }
            public virtual int REFERENCEOPERATION { get; set; }
            public virtual int TYPERIBDONNEUR { get; set; }
            public virtual int RIBDONNEUR { get; set; }
            public virtual int MONTANTVIREMENT { get; set; }
            public virtual int NOMCLIENTDONNEUR { get; set; }
            public virtual int ADRESSECLIENTDONNEUR { get; set; }
            public virtual int NOMCLIENTDESTINATEUR { get; set; }
            public virtual int ADRESSECLIENTDESTINATEUR { get; set; }
            public virtual int NUMEROINTERNE { get; set; }
            public virtual int DATEORDRECLIENT { get; set; }
            public virtual int LIBELLE { get; set; }
            public virtual int CHAMPNONSIGNIFICATIF { get; set; }
            public virtual int TYPERIBBENEFICIAIRE { get; set; }
            public virtual int NUMERO_ENTETE { get; set; }
     
            public string ToString()
            {
                return string.Format("[{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14}]",TYPEOPERATION,REFERENCEOPERATION,
                    TYPERIBDONNEUR,RIBDONNEUR,MONTANTVIREMENT,NOMCLIENTDONNEUR,ADRESSECLIENTDONNEUR,NUMEROINTERNE,DATEORDRECLIENT,
                    LIBELLE,CHAMPNONSIGNIFICATIF,TYPERIBBENEFICIAIRE,NUMERO_ENTETE);
            }
        }
    Le fichier de 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?xml version="1.0" encoding="utf-8" ?>
     
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Interface_Clearing">
     
      <class name="Operation" table="CLR_OPERATION">
        <id name="NUMERO_ENTETE"  column="NUMERO_ENTETE"  unsaved-value="0">
          <generator class="native"/>
        </id>
        <property name="TYPEOPERATION"  column="TYPEOPERATION"/>
        <property name="REFERENCEOPERATION"  column="REFERENCEOPERATION"/>
        <property name="TYPERIBDONNEUR"  column="TYPERIBDONNEUR"/>
        <property name="RIBDONNEUR"  column="RIBDONNEUR"/>
        <property name="MONTANTVIREMENT"  column="MONTANTVIREMENT"/>
        <property name="NOMCLIENTDONNEUR"  column="NOMCLIENTDONNEUR"/>
        <property name="ADRESSECLIENTDONNEUR"  column="ADRESSECLIENTDONNEUR"/>
        <property name="NOMCLIENTDESTINATEUR"  column="NOMCLIENTDESTINATEUR"/>
        <property name="ADRESSECLIENTDESTINATEUR"  column="ADRESSECLIENTDESTINATEUR"/>
        <property name="NUMEROINTERNE"  column="NUMEROINTERNE"/>
        <property name="DATEORDRECLIENT"  column="DATEORDRECLIENT"/>
        <property name="LIBELLE"  column="LIBELLE"/>
        <property name="CHAMPNONSIGNIFICATIF"  column="CHAMPNONSIGNIFICATIF"/>
        <property name="TYPERIBBENEFICIAIRE"  column="TYPERIBBENEFICIAIRE"/>
      </class>
     
    </hibernate-mapping>
    Mais en lançant le projet je me retrouve avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NHibernate.MappingException
    Je précise que la classe et le fichier de mapping son dans le même répertoire Entity.

    Merci de m'aider a résoudre ce problème

  2. #2
    Membre actif
    Homme Profil pro
    Architecte C#
    Inscrit en
    Février 2003
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte C#

    Informations forums :
    Inscription : Février 2003
    Messages : 78
    Par défaut
    Bonjour,

    peux tu copier le détail complet de l'exception ?

    (aussi, petite astuce, si les columns ne sont pas précisées, NHibernate va prendre par défaut le nom des propriétés, vu que dans ton cas, ce sont les mêmes... ^^)

    Bonne journée

  3. #3
    Membre averti
    Informaticien
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Informaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Par défaut
    Citation Envoyé par Vimaire Voir le message
    Bonjour,


    (aussi, petite astuce, si les columns ne sont pas précisées, NHibernate va prendre par défaut le nom des propriétés, vu que dans ton cas, ce sont les mêmes... ^^)
    J'avoue que je n'y comprend grand chose. Soyez plus claire si possible.

    Le débogueur me renvoie juste
    NHibernate.MappingException

    Merci d'avoir réagi aussi vite

  4. #4
    Membre actif
    Homme Profil pro
    Architecte C#
    Inscrit en
    Février 2003
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte C#

    Informations forums :
    Inscription : Février 2003
    Messages : 78
    Par défaut
    Bonjour,

    Je veux simplement dire que si tes noms de colonne en base correspondent au nom des propriétés de ton objet, tu peux simplement écrire ton mapping de la sorte :

    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
     
    <class name="Operation" table="CLR_OPERATION">
    <id name="NUMERO_ENTETE">
    <!--La column est la meme que le nom de la propriété, donc, pas besoin de la rajouter. De plus la unsaved-value est également égale à la valeur par défaut du type int, pas besoin non plus de la préciser-->
    <generator class="native"/>
    </id>
    <property name="TYPEOPERATION" />
    <property name="REFERENCEOPERATION" />
    <property name="TYPERIBDONNEUR" />
    <property name="RIBDONNEUR" />
    <property name="MONTANTVIREMENT" />
    <property name="NOMCLIENTDONNEUR" />
    <property name="ADRESSECLIENTDONNEUR" />
    <property name="NOMCLIENTDESTINATEUR" />
    <property name="ADRESSECLIENTDESTINATEUR" />
    <property name="NUMEROINTERNE" />
    <property name="DATEORDRECLIENT" />
    <property name="LIBELLE" />
    <property name="CHAMPNONSIGNIFICATIF" />
    <property name="TYPERIBBENEFICIAIRE" />
    </class>
     
    </hibernate-mapping>
    Mais ca n'a rien à voir avec ton problème.

    Quand je dis le détail, c'est le contenu du détail quand tu clique sur "Copier le détail de l'exception dans le presse papier" puis que tu le colle quelque part.

    J'imagine que c'est à la création de la SessionFactory que ton application lance l'exception ?

    Tu peux également récupérer le détail en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
    {
        SessionFactory = new Configuration().Configure().BuildSessionFactory();
    }
    catch(Exception e)
    {
        // et ici récupérer le contenu de e.ToString();
    }
    de plus, ta configuration de la session factory pourrais m'etre utile également pour t'aider

    Merci d'avance

  5. #5
    Membre averti
    Informaticien
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations professionnelles :
    Activité : Informaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Par défaut
    Merci encore pour la rapidité de tes interventions
    et je suivrai vos remarque!

    voila la configuration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Configuration config = new Configuration();
                ISessionFactory factory;
                config.SetProperty(NHibernate.Cfg.Environment.ConnectionProvider, "Hibernate.Connection.DriverConnectionProvider");
                config.SetProperty(NHibernate.Cfg.Environment.ConnectionDriver, "NHibernate.Driver.OracleClientDriver");
                config.SetProperty(NHibernate.Cfg.Environment.ConnectionString, "chaîne de connexion;");
                config.SetProperty(NHibernate.Cfg.Environment.Dialect, "NHibernate.Dialect.OracleDialect");
                config.SetProperty(NHibernate.Cfg.Environment.ShowSql, "true");
                config.SetProperty(NHibernate.Cfg.Environment.ProxyFactoryFactoryClass, "NHibernate.Bytecode.castle.ProxyFactoryFactory, NHibernate.Bytecode.Castle");
                config.SetProperty(NHibernate.Cfg.Environment.QuerySubstitutions, "true 1, false 0, yes 'Y', no 'N'");
                config.AddAssembly("Interface_Clearing");
    j'utilise une base de donner oracle.

  6. #6
    Membre actif
    Homme Profil pro
    Architecte C#
    Inscrit en
    Février 2003
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte C#

    Informations forums :
    Inscription : Février 2003
    Messages : 78
    Par défaut
    Le presse papier c'est ce que tu alimente avec CTRL + C, et que tu dépose en utilisant CTRL + V.

    Copier le détail du presse papier, c'est simplement préparer le détail de l'exception à être collé.

    Pour la config, a partir de la version 3.1 il me semble, elle n'est plus nécessaire, NHibernate va par défaut utiliser celui dans NHibernate.ByteCode.DefaultProxyFactoryFactory. Plus besoin de la dépendance de Castle.DynamicProxy (selon la version que tu utilise).

    Tu utilise une base oracle. le générateur d'identité natif d'oracle est la séquence.

    Il ta faut donc créer une séquence sous oracle (ou pas si tu fais générer la base de données via NHibernate, il la créera tout seul) et modifier ton mapping comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <id name="NUMERO_ENTETE">
    <generator class="native">
        <param name="sequence">NOMDELASEQUENCE</param>
    </generator>
    </id>
    ...
    autre point que je vois, le fichier de mapping se finit-il par ".hbm.xml" et est il bien en ressource incorporée ?

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

Discussions similaires

  1. Mapping Exception : component class not found
    Par lion13 dans le forum Hibernate
    Réponses: 2
    Dernier message: 06/05/2008, 14h30
  2. [NHibernate.Mapping.Attributes] Relation ManyToMany
    Par anthyme dans le forum NHibernate
    Réponses: 2
    Dernier message: 12/07/2007, 20h34
  3. Réponses: 3
    Dernier message: 02/06/2007, 12h54
  4. [NHibernate]NHibernate Mapping Attributes
    Par benny7 dans le forum Hibernate
    Réponses: 2
    Dernier message: 28/08/2006, 12h57
  5. [Hibernate] - Mapping Exception
    Par msiramy dans le forum Hibernate
    Réponses: 3
    Dernier message: 09/01/2006, 16h38

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