首页 > 解决方案 > 双向 OneToOne 中的相同实体

问题描述

我正在尝试找到有关此问题的解决方案:我有一个映射另一个实体的规则的关系表。

    @Entity
public class Relation {
   @Id
   public Long id;
   @OneToOne
   public Address addressHome;
   @OneToOne
   public Address addressWork
}

和一个班级地址

@Entity
    public class Address {
       @Id
       public Long id;
    }

我会从地址到关系建立一个双向关系。

有人能帮我吗?谢谢

标签: javahibernateorm

解决方案


你需要做的是告诉 Hibernate 和之间的关系AddressRelation首先你需要将它实现到 Relation 中:

@Entity
public class Relation {
    @Id
    public Long id;

    @OneToOne
    @JoinColumn(name = "addressHome", referencedColumnName = "id")
    public Address addressHome;

    @OneToOne
    @JoinColumn(name = "addressWork", referencedColumnName = "id")
    public Address addressWork;
}

然后你需要像这样编辑你的地址类:

@Entity
public class Address {
   @Id
   public Long id;

   @OneToOne(mappedBy = "addressHome")
   public Relation relationHome;

   @OneToOne(mappedBy = "addressWork")
   public Relation relationWork;
}

如果您愿意,可以将注释放在 getter 上而不是变量上。


推荐阅读