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

NHibernate Discussion :

[nhibernate] mapper une classe à plusieurs tables


Sujet :

NHibernate

  1. #1
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut [nhibernate] mapper une classe à plusieurs tables
    Bonjour,

    J'utilise nhibernate 1.2 et j'aimerais savoir si il est possible de mapper une classe à plusieurs table. Voici mon problème :
    J'ai crée une classe "Quantity". J'ai par ailleurs une classe "Product" qui contient :
    - une propriété "UnitWeight" de type Quantity. Cette propriété doit être mappé à un champ "UnitWeight" de ma table "Product".
    - une liste "Quantities" de Quantity. Ces quantités sont stockés coté base de données dans une table "Quantities".

    Il faut donc que je map ma classe Quantity à deux tables différentes. J'ai donc écrit le fichier de mapping suivant :

    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
     
     <class name="Product" lazy="false">
    <id name="Id">
    <generator class="identity" />
    </id>
    <bag name="Quantities" table="Quantities" order-by="MinQuantity">
    <key column="Product_Id" />
    <one-to-many class="Quantity" />
    </bag>
    <one-to-one name="UnitWeight" class="Quantity" />
    </class>
     
    <class name="Quantity" table="Quantities">
    <id name="Id">
    <generator class="identity" />
    </id>
    <property name="Value" column="Value" />
    </class>
     
    <class name="Quantity" table="Product">
    <id name="Id">
    <generator class="identity" />
    </id>
    <property name="Value" column="UnitWeight" />
    </class>
    J'obtiens avec ce mapping l'erreur suivante :
    Duplicate class/entity mapping Weight

    Visiblement je ne peux pas écrire 2 fois la même classe dans le fichier de mapping. Savez-vous comment corriger ce problème ?

    merci d'avance.

    mathmax
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Pourquoi ne pas poser cette question sur les forums de NHibernate ?
    Tu auras beaucoup plus de chances d'obtenir une réponse.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut
    Je l'ai posé dans le forum nhibernate, mais je n'ai pas eu de réponse. Mon anglais n'est pas terrible il faut dire... Connais-tu le sujet suffisamment pour m'aider ?
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  4. #4
    mow
    mow est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 210
    Points : 166
    Points
    166
    Par défaut
    Salut,

    J'utilise NHibernate avec mes projets .NET mais seulement à partir des annotations pour t'aider. J'apprécierai que tu présentes le schéma de ta base de données.
    Les relations entre les différentes tables dont il est question plus exactement...

    Mow

  5. #5
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut
    Table Product :
    Id : int clé
    UnitWeight : numeric(18,3) ==> à mapper à la propriété "Value" de la classe Quantity

    Table Quantities :
    Product_Id : int clé étrangère
    Value : numeric(18,3) ==> à mapper à la propriété "Value" de la classe Quantity

    La relation se fait donc sur Product.Id = Quantities.Product_Id
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  6. #6
    mow
    mow est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 210
    Points : 166
    Points
    166
    Par défaut
    Désolé, je ne vois que maintenant ton message.
    J'espère ne pas t'embêter en te demandant de rajouter les infos sur ta table Quantity
    Il y a un truc qui me chiffone c'est que tu veux mapper certaines de tes tables à d'autres tables mais en passant par les proprietés et non les id (tes clés primaires).

    Mow

  7. #7
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut
    J'espère ne pas t'embêter en te demandant de rajouter les infos sur ta table Quantity
    En fait il y a en plus un Id pour la table quantities. Ce qui donne :


    Table Quantities :
    Id : clé primaire
    Product_Id : int clé étrangère
    Value : numeric(18,3) ==> à mapper à la propriété "Value" de la classe Quantity

    Est-ce toutes les infos qu'il te faut ?
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

Discussions similaires

  1. [JPA/Hibernate] Mapper une classe sur plusieurs tables
    Par lamoua76 dans le forum Persistance des données
    Réponses: 4
    Dernier message: 19/01/2012, 11h43
  2. [Hibernate Annotation] Mapper une classe abstraite
    Par DanZzz dans le forum Hibernate
    Réponses: 3
    Dernier message: 15/06/2006, 22h12
  3. [Hibernate] Mapper une classe association
    Par mauvais_karma dans le forum Hibernate
    Réponses: 16
    Dernier message: 25/01/2006, 12h34
  4. Réponses: 10
    Dernier message: 10/01/2006, 14h14
  5. [débutant] 1 ordre select sur une OU plusieurs tables
    Par goony dans le forum Langage SQL
    Réponses: 10
    Dernier message: 18/08/2005, 10h57

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