我的休眠模式有一个端口实体。 每个端口应该具有零个或一个连接到另一个端口,因此有“connectedPort”字段引用相同的实体:
public class Port {
// ...
@OneToOne
@JoinColumn
private Port connectedPort;
// ...
}
但通常为@OneToOne会有的关系,关系的“映射”面的“拥有”的一面 - 在这里,这也如此 - 如果是的话,如何和为什么?
我的休眠模式有一个端口实体。 每个端口应该具有零个或一个连接到另一个端口,因此有“connectedPort”字段引用相同的实体:
public class Port {
// ...
@OneToOne
@JoinColumn
private Port connectedPort;
// ...
}
但通常为@OneToOne会有的关系,关系的“映射”面的“拥有”的一面 - 在这里,这也如此 - 如果是的话,如何和为什么?
从OneToOne
API文档:
如果关系是双向的,非持有端必须使用
mappedBy
的元素OneToOne
注释指定的拥有方的关系字段或属性。
所以,要么你connectedPort
具有其反向连接的端口没有关系,现场的持有者connectedPort
有外键,或关系是双向的,你必须指定谁拥有使用外键mappedBy
。
编辑当我从您的代码片断假设你连接的端口有没有谁连接到他们,所以你的知识Port
持有该知识它们连接的人持有外键,并且这种关系的拥有方。