一对一与多对一(单向)

时间:2018-11-05 07:37:18

标签: hibernate jpa one-to-one many-to-one

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

1 个答案:

答案 0 :(得分:2)

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

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

Hibernate层中还有更直接的区别,即如果您引用同一事务中来自不同拥有实体(雇主)的SAME非拥有实体(雇员),则在使用@OneToOne时将获得异常关系应该为@ManyToOne的人-例如,请参见此答案:https://stackoverflow.com/a/18463748/3368558