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