问题描述
|
我有以下映射的类:
<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将Company提取为CompanyAccounting,因为Company(32)既是会计公司又是客户,并且当我致电Session.Get后,它已将Company提取为CompanyAccounting,所以它不会返回数据库并检查是否存在CompanyClient的条目,并假设Company只能在子类上,是否有必要指定它可以从所有子类继承?解决方法
我最终要做的是重构我的班级,而不是
类公司,
CompanyClient类:公司,
class CompanyAccounting:公司
我使CompanyClient和CompanyAccounting不是从Company继承的,并将Company作为
<one-to-one>
关系添加,这是这些类的主键。