这是我以前做了很多次的事情,但我的脑子现在只是空白,我会尝试简单概述一下我目前的情况。
我目前有3个表格如下所示:
Office > id, name
Person > id, name
Office_Personnel > office_id, person_id
然后我有一个Person(id,name)和Office模型,但Office模型包含人员信息:
public class Office
{
int Id {get;set;}
string Name {get;set;}
ICollection<Person> Personnel {get;set;}
}
映射人很容易,但现在我有点难过为什么办公室不能正确映射。当我绘制人员时,我选择使用一套,因为不应该有任何重复,但它似乎没有像我期望的那样工作......
<set name="Personnel" table="office_personnel" cascade="all">
<key column="office_id" />
<one-to-many class="Person"/>
</set>
现在有一件事让我感到奇怪的是,没有迹象表明哪个人应该绑定(person_id)。它一直试图在Person表中找到* office_id *列。
我确信这只是一个简单的问题而且我是个白痴,但任何帮助都会很棒!
另一方面,我正在权衡我是否应该打扰中间人表,因为我可以直接在Person表中放置一个Office_Id列,但我不是100%肯定是否在我的真正的项目中,Person类可能位于更多的办公室......
答案 0 :(得分:1)
为了正确映射,您需要有3个实体:
Person 1 <-> n Personnel n <-> 1 Office
或使用连接表将其映射为多对多关联(请参阅hibernate文档的第8.3节)
Person n <-> n Office