2009-10-19 191 views
1

我有下面的類。如何爲MainBranch.Id列編寫映射文檔。我在數據庫中沒有分支表,只想使用branchId作爲MAINBRANCHCODE。任何想法?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; }  
     } 

我映射文檔:

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

回答

2

使用組件映射

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

是你的權利,我發現,我需要使用組件,但不是這樣。感謝您的想法。答案如下:) – NetSide 2009-10-20 07:55:19

1

下面是答案:)

<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;} 
    } 
} 

可爲被映射:

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

因此,加號是關鍵 (我認爲Java的Hibernate使用此美元符號$)