让我们从一个例子开始:
Person
Address homeAddress
Address workAddress
Address
Person person
地址不与其他人共享(所以它绝对是一对一的关系。
在数据库中设置相当容易,但我不知道如何在hibernate中配置它。我不想使用Person对象中的地址列表,我肯定需要从地址到人的链接。
解决方法是创建OneToMany,在Address('home'或'business')上使用区分器,在Person对象上获取/设置/添加地址时,处理过滤器。
答案 0 :(得分:0)
我能够解决这个问题:
Person
Address homeAddress
Address workAddress
Address
Person personForHomeAddress
Person personForWorkAddress
Person getPerson(){
return personForHomeAddress != null ? personForHomeAddress : personForWorkAddress
}
void setPerson(Person person){
...
}
这不是最优的,因为我的地址表中需要2列,但我可以在hibernate中坚持2个一对一的关系。
还有其他想法吗?