使用Hibernate(注释)从表A到表B两次一对一关系

时间:2013-06-28 09:27:13

标签: hibernate annotations one-to-one

让我们从一个例子开始:

Person
    Address homeAddress
    Address workAddress

Address
    Person person

地址不与其他人共享(所以它绝对是一对一的关系。

在数据库中设置相当容易,但我不知道如何在hibernate中配置它。我不想使用Person对象中的地址列表,我肯定需要从地址到人的链接。

解决方法是创建OneToMany,在Address('home'或'business')上使用区分器,在Person对象上获取/设置/添加地址时,处理过滤器。

1 个答案:

答案 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个一对一的关系。

还有其他想法吗?