2009-10-19 12 views
1

J'ai les classes ci-dessous. Comment puis-je écrire le document de mappage pour la colonne MainBranch.Id. Je n'ai pas de table de branche dans la base de données, je veux juste utiliser branchId pour MAINBRANCHCODE. Une idée?Problème de mappage de classe imbriqué NHibernate

public class Bundle 
     { 
      public virtual Decimal Id { get; set; }  
      public virtual BundleEntranceInformation Information { get; set; } 
     } 
    public class BundleEntranceInformation 
     { 
      public virtual Branch MainBranch { get; set; }  
     } 
    public class Branch 
     { 
      public virtual short Id { get; set; }  
     } 

Mon document de mapping:

<class name="PromissoryNotes.Server.Data.Bundle, PromissoryNotes.Server.Data" table="BUNDLE" lazy="true"> 
    <id name="Id" column="ID" type="Decimal"> 
     <generator class="increment" /> 
    </id> 
    <property name="Information.MainBranch.Id" column="MAINBRANCHCODE" type="short"></property> 

    </class> 

Répondre

2

Utilisez une cartographie composante

<class name="BundleEntranceInformation"> 
    <component name="MainBranch"> 
    <property name="Id" column="MAINBRANCHCODE"/> 
    </component> 
</class> 
+1

oui vous avez raison, je l'ai trouvé, je dois utiliser le composant mais pas comme ça. Merci pour l'idée. La réponse est comme ci-dessous :) – NetSide

1

Voici la réponse :)

<component name="Information"> 
    <component name="MainBranch"> 
    <property name="Id" column="MAINBRANCHCODE"/> 
    </component> 
</component > 
1
public class MainClass 
{ 
    public virtual long MainKey {get; set;} 
    public virtual SubClass SubInstance {get; set;} 

    public class SubClass 
    { 
    public virtual long SubKey {get;set;} 
    } 
} 

peut être mis en correspondance comme:

<class name="MainClass" table="Main"> 
    <id name="MainKey" column="MainId" type="Int64"> 
    <generator class="identity" /> 
    </id> 
    <many-to-one name="SubInstance" class="MainClass+SubClass" Column="SubId"/> 
</class> 

<class name="MainClass+SubClass" table="Sub"> 
    <id name="SubKey" column="SubId" type="Int64"> 
    <generator class="identity" /> 
    </id> 
</class> 

Ainsi, le signe plus est la clé (je crois que java-veille prolongée utilise le signe dollar $ pour cela)

Questions connexes