雇主有多名雇员,因此雇员与雇主有(多对一)关系。假设我们忽略了从雇主到雇员的反向关系(一对多),那么从雇员的角度来看,这可以表示为一对一关系!
答案 0 :(得分:2)
乍一看,它看起来可能是这样-使用@OneToOne
关系时不会出现任何错误,而实际上是@ManyToOne
并且在大多数情况下行为没有任何不同,因为就拥有实体(您的示例中的雇员)而言,它只关心自己和非拥有实体(雇主),而无需了解其兄弟姐妹(其他雇员) ),但@OneToOne
具有@ManyToOne
没有的其他属性,因为它假设(与它是一对一的)它与该关系的另一端具有直接关系:
@OneToOne
具有orphanRemoval
属性,如果拥有实体(雇员)被删除,则允许您删除关系(雇主)的另一面-@ManyToOne
不可用
Hibernate层中还有更直接的区别,即如果您引用同一事务中来自不同拥有实体(雇主)的SAME非拥有实体(雇员),则在使用@OneToOne
时将获得异常关系应该为@ManyToOne
的人-例如,请参见此答案:https://stackoverflow.com/a/18463748/3368558