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]Propriété Many-to-one et composite-id


Sujet :

NHibernate

  1. #1
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut [NHibernate]Propriété Many-to-one et composite-id
    Bonjour,

    Je ne comprends comment fait NHibernate pour mapper une propriété many-to-one à l'une des colonnes faisant partir d'une clé composite-id.
    J'ai une table EMPLOYEE dont la clé est une clé composite

    EMPLOYEE(SITE, IDEMPLOYEE, NAME)

    J'ai une table TASK dont la clé est aussi une clé composite et dont l'une des colonnes (CREATOR_BY) est l'ID de l'employé.

    TASK(SITE,IDTASK,CREATOR_BY)

    J'ai donc défini les classes Employee et Task de la manière suivante:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Employee
    {
     public virtual string SITE {get; set;}
     public virtual string IDEMPLOYEE {get; set;}
     public virtual string NAME{get; set;}
    }
     
    public class Task
    {
     public virtual string SITE {get; set;}
     public virtual string IDTASK{get; set;}
     public virtual Employee CREATOR_BY{get; set;}
    }

    J'ai défini le mapping de Employee et Task comme suit:

    Code xml : 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
     
    <class name="Employee" table="EMPLOYEE" lazy="true">
        <composite-id>
          <key-property name="SITE" type="System.String"/>
          <key-property name="IDEMPLOYEE" type="System.String"/>
        </composite-id>    
        <property name="NAME" type="System.String/>
    </class>
     
    <class name="Task" table="TASK" lazy="true">
        <composite-id>
          <key-property name="SITE" type="System.String"/>
          <key-property name="IDTASK" type="System.String"/>
        </composite-id>    
        <many-to-one name="CREATOR_BY" class="Employee" lazy="false">
          <column name="SITE"/>
          <column name="CREATOR_BY"/>
        </many-to-one>
    </class>

    Ca fonctionne plutôt bien. Le hic, c'est que je ne comprends pas trop comment fait NHibernate.
    En effet, comment fait-il pour savoir que CREATOR_BY correspond à la colonne IDEMPLOYEE de la classe Employee ?

    Merci d'avance,
    Zoax

  2. #2
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonsoir,

    en réalité mon mapping many-to-one n'est pas correct.
    Ca fonctionne avec un select mais pas avec un insert.
    De ce fait, pourriez-vous me dire svp comment je dois définir le mapping many-to-one pour la propriété CREATOR_BY ?

    Merci d'avance,
    Zoax

  3. #3
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonsoir,

    j'ai trouvé une solution qui fonctionne mais que je ne comprends pas trop:

    En réalité il fallait que je définisse avec l'attribut many-to-one la colonne constituant la clé primaire composite avec l'attribut formula comme ceci:

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <many-to-one name="CREATOR_BY" class="Employee" lazy="false">
          <formula>SITE</formula>
          <column name="CREATOR_BY"/>
        </many-to-one>

    Pourriez-vous svp m'expliquer comment fait NHIbernate et ce qu'est l'attribut formula ?

    Merci d'avance,
    Zoax

Discussions similaires

  1. Problème accès aux propriétés entre deux classes liées par many-to-one
    Par moha1984 dans le forum Persistance des données
    Réponses: 1
    Dernier message: 21/06/2010, 10h07
  2. [NHibernate] problème de relation one-to-many
    Par Spikuria dans le forum NHibernate
    Réponses: 1
    Dernier message: 30/04/2009, 14h22
  3. many-to-one et composite-id
    Par XerxesAstrya dans le forum Hibernate
    Réponses: 0
    Dernier message: 29/04/2009, 16h29
  4. many-to-one vers une classe ayant un composite-id
    Par a tunar with no tune dans le forum Hibernate
    Réponses: 2
    Dernier message: 20/06/2008, 09h08
  5. relation many-to-one avec clefs composites
    Par Foub dans le forum Hibernate
    Réponses: 2
    Dernier message: 27/09/2007, 14h33

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