一对一与多对一(单向)

one-to-one vs many-to-one (unidirectional)

一个雇主有多个雇员,因此雇员与其雇主之间存在(多对一)关系。如果我们忽略雇主与雇员的反向关系(一对多),那么从雇员的角度来看,这可以表示为一对一的关系!?

乍一看可能是这样 - 使用 @OneToOne 关系时不会出现任何错误,而在大多数情况下它实际上是 @ManyToOne hibernate 的行为不会有任何不同,因为就拥有实体(您的示例中的员工)而言,它只关心自己和非拥有实体(雇主)并且不需要知道它兄弟姐妹(其他员工)但是 @OneToOne 具有 @ManyToOne 没有的其他属性,因为它假定(认为是一对一的)它与另一方有直接关系关系:

@OneToOne 有一个 orphanRemoval 属性 允许您删除关系的另一方(雇主),如果拥有实体(雇员)被删除 - 这是不可用的@ManyToOne

在 Hibernate 层中也有更直接的差异,如果您在同一事务中从不同的拥有实体(雇主)引用相同的非拥有实体(员工),您将在使用 @OneToOne 的关系应该是 @ManyToOne - 请参阅此答案的示例: