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



让我们从一个例子开始:

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

还有其他想法吗?

最新更新