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