如何在Hibernate中识别自引用一对一关系的映射/拥有方?

时间:2015-02-17 09:28:05

标签: java hibernate orm one-to-one relationships

我的Hibernate架构有一个Port实体。每个端口应该有一个或一个连接到另一个端口,因此有一个“connectedPort”字段引用同一个实体:

public class Port {
    // ...
    @OneToOne
    @JoinColumn
    private Port connectedPort;
    // ...
}

但通常对于@OneToOne,会有一个“拥有”的关系方面和关系的“映射”方面 - 这也是这种情况 - 如果是,那么如何以及为什么?

1 个答案:

答案 0 :(得分:1)

来自OneToOne API doc:

  

如果关系是双向的,则非拥有方必须使用mappedBy注释的OneToOne元素来指定拥有方的关系字段或属性。

因此,您的connectedPort与其反向连接端口没有任何关系,并且字段connectedPort的持有者具有外键,或者该关系是双向的,您必须指定谁持有使用mappedBy的外键。

修改正如我假设你的代码片段中你所连接的端口不知道谁连接到它们,所以你的Port持有他们所连接的知识持有外键并且是这种关系的拥有方。