一对一vs多对一(单向)



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

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

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

Hibernate层中还有更直接的区别,如果在同一事务中引用来自不同拥有实体(雇主(的SAME非拥有实体(雇员(,则在使用关系应为@ManyToOne@OneToOne时会出现异常-请参阅以下答案以获取示例:https://stackoverflow.com/a/18463748/3368558

最新更新