双向OneToOne中的相同实体

时间:2018-07-11 15:02:42

标签: java hibernate orm

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

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

和一个班级地址

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

我会在地址之间建立双向关系。

有人可以帮助我吗? 谢谢

2 个答案:

答案 0 :(得分:0)

您需要做的就是告诉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;
}

然后,您需要像这样编辑Address类:

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

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

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

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

答案 1 :(得分:0)

我没有足够的声誉来评论,但是假设这就是您在代码中拥有的全部,那么它应该可以那样工作,也许您忘记了@JoinColumn标签指定了数据库字段的名称。建议您提供有关您的数据模型如何关联的更多信息。