我要说的第一点是,你的数据库模式和你的描述不匹配,所以请根据初始值接受下面的任何建议
告诫
. 你说
一个项目是在一个特定的分支机构进行的。
这意味着项目和分支之间应该有一个简单的外键关系。当然,如果这就是模式的样子,那么您将拥有一个双向多对多链接表,并且您的生活将更加轻松。
无论如何,有了三向组合,您需要有一个组件集合,其中组件对其他两个对象类型具有多对一属性。有一个例子
section 7.2 of the NHibernate documentation
,但我认为在产品的映射中会出现类似的情况:
<set name="BranchEmployees" table="product_employee_branch" lazy="true">
<key column="product_id">
<composite-element class="Purchase">
<many-to-one name="Branch" class="Branch" />
<many-to-one name="Employee" class="Employee"/>
</composite-element>
</set>