我有一个名为Software&/ p>的表和实体
然后我有一个没有实体的Table LinkedSoftware
我正在努力设置我的hibernate映射文件,不断得到映射错误。 我试过以下没有运气:
<set name="linkedSoftware" access="field" cascade="all-delete-orphan" table="LinkedSoftware">
<many-to-many class="Software" column="BaseSoftwareId" />
<many-to-many class="Software" column="LinkedSoftwareId" />
</set>
<many-to-one name="LinkedSoftware" column="BaseSoftwareId" cascade="save-update" class="Software" />
<many-to-one name="LinkedSoftware" column="LinkedSoftwareId" cascade="save- update" class="Software" />-->
有没有人可以指出我正确的方向。 我试着谷歌,但无法真正找到答案。
答案 0 :(得分:1)
我认为你也应该将表LinkedSotware
作为一个实体。然后尝试更像这样写set
:
<set name="LinkedSoftware" table="LinkedSoftware">
<key>
<column name="BaseSoftwareId" />
</key>
<one-to-many class="LinkedSoftware" />
</set>
但不确定这是否就是一切,因为这会让您只设置LinkedSoftware
实例,其Software
实例为BaseSoftware
。对不起我的英文,希望你理解。
然后在LinkedSoftware
映射中:
<many-to-one name="BaseSoftware" class="Software">
<column name="BaseSoftwareId" />
</many-to-one>
<many-to-one name="LinkedSoftware" class="Software">
<column name="LinkedSoftwareId" />
</many-to-one>
这NHibernate: Two foreign keys in the same table against same column可以帮到你。我会避免使用多对多,我认为这会更灵活。对于多对多解释,请参阅Nhibernate: How to represent Many-To-Many relationships with One-to-Many relationships?。