1

我有一个 Staff 和 e SecuredPage 实体,属性如下

职员

id Name LastName Level // SecuredPage.RoleId

安全页面

id PageId RoleId // Staff.Level

我想在 Staff 实体中有一个 SecuredPage 的集合,所以它是一对多的,但我不知道如何在映射中处理它。

员工.hbm.xml

<bag name="SecuredPages"  lazy="true" inverse="false" cascade="none">
      <key column="RoleId" />
      <many-to-many class="RealEstate.Core.Domain.SecuredPage,RealEstate.Core" />
</bag>

使用上面的代码 Nhibernate 从 SecuredPage 表中获取所有记录,其中

SecuredPage.RoleId = Staff.id

但我希望它是

SecurePage.RoleId = Staff.StaffLevel

由于某些原因,我没有创建角色实体,这就是为什么我直接尝试根据其级别(角色)为员工获取安全页面

我希望我能告诉你我的问题。我检查了 Nhibernate 指南,阅读了有关集合映射的所有内容,但我无法弄清楚。

谢谢

4

1 回答 1

1

我认为问题在于它并不是真正的一对多。实际上,这是多对多关系的一种表达方式。

我知道这听起来不像你想听到的(正如你所说你没有创建角色实体),但你可能想考虑这样做是为了你自己。

是否有一个“角色”表可以作为您提供的这两个表之间的交叉引用?

如果没有,您应该制作一个,这将有助于解决问题。如果是这样,您可能希望将员工和角色之间的关系视为直接关系,而将员工和 SecuredPages 视为间接关系(通过角色,确实如此)。

编辑:你能告诉我们为什么你没有创建一个“角色”实体吗?这可能有助于我们澄清。

于 2009-01-05T20:32:24.120 回答