1. #1
    Membre confirmé
    Inscrit en
    avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : avril 2006
    Messages : 346
    Points : 224
    Points
    224

    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 confirmé
    Inscrit en
    avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : avril 2006
    Messages : 346
    Points : 224
    Points
    224

    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 confirmé
    Inscrit en
    avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : avril 2006
    Messages : 346
    Points : 224
    Points
    224

    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. 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