代码之家  ›  专栏  ›  技术社区  ›  NetSide

nHibernate嵌套类映射问题

  •  1
  • NetSide  · 技术社区  · 16 年前

    我下课了。如何为mainbranch.id列编写映射文档。数据库中没有分支表,只想将branchID用于mainbranchcode。有什么想法吗?

    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>
    
    3 回复  |  直到 14 年前
        1
  •  2
  •   Jan Willem B    16 年前

    使用组件映射

    <class name="BundleEntranceInformation">
      <component name="MainBranch">
        <property name="Id" column="MAINBRANCHCODE"/>
      </component>
    </class>
    
        2
  •  1
  •   NetSide    16 年前

    答案如下:)

    <component name="Information">
       <component name="MainBranch">
         <property name="Id" column="MAINBRANCHCODE"/>
       </component>
    </component  >
    
        3
  •  1
  •   Bart Kemps    14 年前
    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使用美元符号$)