首页 > 解决方案 > OneToOne 与同一实体的双向关系

问题描述

我对OneToOne同一个实体的双向关系的定义有疑问。

特别是,我定义了一个类User,我想给它一个属性partner,即 aUser本身。

@Entity
@Table(name = "users")
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true)
    private Long ID;

    ...

    @OneToOne(cascade = CascadeType.ALL, targetEntity = User.class)
    @JoinTable(
        name = "user_partners",
        joinColumns = {@JoinColumn(name = "u1", referencedColumnName = "ID")},
        inverseJoinColumns = {@JoinColumn(name = "u2", referencedColumnName = "ID")}
    )
    private User partner;

    ...
}

现在,如果我测试我的存储库中定义的这个案例UserRepository.java

...
User um = new User(...);
User uf = new User(...);

um.setPartner(uf);
...

我希望两者umuf提到他们的合作伙伴。相反,只有um我明确定义的引用。

我究竟做错了什么?

标签: javahibernatejpa

解决方案


推荐阅读