C#NHibernate Joined-Subclass得到问题

我有以下映射类:

    <class name="Company" table="Company">
        <id name="ID" column="CompanyID">
          <generator class="native"/>
        </id>
        <joined-subclass name="CompanyAccounting" table="company_accounting" lazy="true">
          <key column="CompanyID"/>
        </joined-subclass>
        <joined-subclass name="CompanyCarbon" table="company_carbon" lazy="true">
          <key column="CompanyID" />
        </joined-subclass>
    </class>
现在,以下测试失败:
        var company = CompanyAdapter.Get<Company>(_session, 32);
        Assert.IsNotNull(company);
var client = CompanyAdapter.Get<CompanyClient>(_session, 32);
        Assert.IsNotNull(client);
但以下成功:
        var client = CompanyAdapter.Get<CompanyClient>(_session, 32);
        Assert.IsNotNull(client);
var company = CompanyAdapter.Get<Company>(_session, 32);
        Assert.IsNotNull(company);
第一次测试失败的原因是因为NHibernate将公司视为CompanyAccounting,因为公司(32)既是一家会计公司,也是一个客户,当我在公司检索公司后调用Session.Get时,它不会回到数据库,并检查是否有CompanyClient条目,它假定公司只能在子类上,是否有指定它可以继承所有的子类?
已邀请:

dut

赞同来自:

我最终做的是重构我的课程,而不是 班级公司, class CompanyClient:公司, 类公司会计:公司 我使CompanyClient和CompanyAccounting不从公司继承,并将公司添加为<one-to-one>关系,这是这些类的主键。

要回复问题请先登录注册