我的Hibernate架构有一个Port实体。每个端口应该有一个或一个连接到另一个端口,因此有一个“connectedPort”字段引用同一个实体:
public class Port {
// ...
@OneToOne
@JoinColumn
private Port connectedPort;
// ...
}
但通常对于@OneToOne,会有一个“拥有”的关系方面和关系的“映射”方面 - 这也是这种情况 - 如果是,那么如何以及为什么?
答案 0 :(得分:1)
来自OneToOne
API doc:
如果关系是双向的,则非拥有方必须使用
mappedBy
注释的OneToOne
元素来指定拥有方的关系字段或属性。
因此,您的connectedPort
与其反向连接端口没有任何关系,并且字段connectedPort
的持有者具有外键,或者该关系是双向的,您必须指定谁持有使用mappedBy
的外键。
修改正如我假设你的代码片段中你所连接的端口不知道谁连接到它们,所以你的Port
持有他们所连接的知识持有外键并且是这种关系的拥有方。